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
b90f89a4
Kaydet (Commit)
b90f89a4
authored
Ock 15, 2001
tarafından
Tim Peters
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Whitespace normalization.
üst
495ad3c8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
279 additions
and
282 deletions
+279
-282
tabnanny.py
Lib/tabnanny.py
+116
-117
telnetlib.py
Lib/telnetlib.py
+3
-3
tempfile.py
Lib/tempfile.py
+25
-25
threading.py
Lib/threading.py
+3
-3
toaiff.py
Lib/toaiff.py
+44
-44
tokenize.py
Lib/tokenize.py
+0
-1
traceback.py
Lib/traceback.py
+0
-0
tty.py
Lib/tty.py
+17
-18
tzparse.py
Lib/tzparse.py
+71
-71
No files found.
Lib/tabnanny.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -248,125 +248,124 @@ def format_witnesses(w):
# in use.
if
hasattr
(
tokenize
,
'NL'
):
# take advantage of Guido's patch!
indents
=
[]
check_equal
=
0
def
reset_globals
():
global
indents
,
check_equal
check_equal
=
0
indents
=
[
Whitespace
(
""
)]
def
tokeneater
(
type
,
token
,
start
,
end
,
line
,
INDENT
=
tokenize
.
INDENT
,
DEDENT
=
tokenize
.
DEDENT
,
NEWLINE
=
tokenize
.
NEWLINE
,
JUNK
=
(
tokenize
.
COMMENT
,
tokenize
.
NL
)
):
global
indents
,
check_equal
if
type
==
NEWLINE
:
# a program statement, or ENDMARKER, will eventually follow,
# after some (possibly empty) run of tokens of the form
# (NL | COMMENT)* (INDENT | DEDENT+)?
# If an INDENT appears, setting check_equal is wrong, and will
# be undone when we see the INDENT.
check_equal
=
1
elif
type
==
INDENT
:
check_equal
=
0
thisguy
=
Whitespace
(
token
)
if
not
indents
[
-
1
]
.
less
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_less_witness
(
thisguy
)
msg
=
"indent not greater e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
indents
.
append
(
thisguy
)
elif
type
==
DEDENT
:
# there's nothing we need to check here! what's important is
# that when the run of DEDENTs ends, the indentation of the
# program statement (or ENDMARKER) that triggered the run is
# equal to what's left at the top of the indents stack
# Ouch! This assert triggers if the last line of the source
# is indented *and* lacks a newline -- then DEDENTs pop out
# of thin air.
# assert check_equal # else no earlier NEWLINE, or an earlier INDENT
check_equal
=
1
del
indents
[
-
1
]
elif
check_equal
and
type
not
in
JUNK
:
# this is the first "real token" following a NEWLINE, so it
# must be the first token of the next program statement, or an
# ENDMARKER; the "line" argument exposes the leading whitespace
# for this statement; in the case of ENDMARKER, line is an empty
# string, so will properly match the empty string with which the
# "indents" stack was seeded
check_equal
=
0
thisguy
=
Whitespace
(
line
)
if
not
indents
[
-
1
]
.
equal
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_equal_witness
(
thisguy
)
msg
=
"indent not equal e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
# take advantage of Guido's patch!
indents
=
[]
check_equal
=
0
def
reset_globals
():
global
indents
,
check_equal
check_equal
=
0
indents
=
[
Whitespace
(
""
)]
def
tokeneater
(
type
,
token
,
start
,
end
,
line
,
INDENT
=
tokenize
.
INDENT
,
DEDENT
=
tokenize
.
DEDENT
,
NEWLINE
=
tokenize
.
NEWLINE
,
JUNK
=
(
tokenize
.
COMMENT
,
tokenize
.
NL
)
):
global
indents
,
check_equal
if
type
==
NEWLINE
:
# a program statement, or ENDMARKER, will eventually follow,
# after some (possibly empty) run of tokens of the form
# (NL | COMMENT)* (INDENT | DEDENT+)?
# If an INDENT appears, setting check_equal is wrong, and will
# be undone when we see the INDENT.
check_equal
=
1
elif
type
==
INDENT
:
check_equal
=
0
thisguy
=
Whitespace
(
token
)
if
not
indents
[
-
1
]
.
less
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_less_witness
(
thisguy
)
msg
=
"indent not greater e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
indents
.
append
(
thisguy
)
elif
type
==
DEDENT
:
# there's nothing we need to check here! what's important is
# that when the run of DEDENTs ends, the indentation of the
# program statement (or ENDMARKER) that triggered the run is
# equal to what's left at the top of the indents stack
# Ouch! This assert triggers if the last line of the source
# is indented *and* lacks a newline -- then DEDENTs pop out
# of thin air.
# assert check_equal # else no earlier NEWLINE, or an earlier INDENT
check_equal
=
1
del
indents
[
-
1
]
elif
check_equal
and
type
not
in
JUNK
:
# this is the first "real token" following a NEWLINE, so it
# must be the first token of the next program statement, or an
# ENDMARKER; the "line" argument exposes the leading whitespace
# for this statement; in the case of ENDMARKER, line is an empty
# string, so will properly match the empty string with which the
# "indents" stack was seeded
check_equal
=
0
thisguy
=
Whitespace
(
line
)
if
not
indents
[
-
1
]
.
equal
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_equal_witness
(
thisguy
)
msg
=
"indent not equal e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
else
:
# unpatched version of tokenize
nesting_level
=
0
indents
=
[]
check_equal
=
0
def
reset_globals
():
global
nesting_level
,
indents
,
check_equal
nesting_level
=
check_equal
=
0
indents
=
[
Whitespace
(
""
)]
def
tokeneater
(
type
,
token
,
start
,
end
,
line
,
INDENT
=
tokenize
.
INDENT
,
DEDENT
=
tokenize
.
DEDENT
,
NEWLINE
=
tokenize
.
NEWLINE
,
COMMENT
=
tokenize
.
COMMENT
,
OP
=
tokenize
.
OP
):
global
nesting_level
,
indents
,
check_equal
if
type
==
INDENT
:
check_equal
=
0
thisguy
=
Whitespace
(
token
)
if
not
indents
[
-
1
]
.
less
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_less_witness
(
thisguy
)
msg
=
"indent not greater e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
indents
.
append
(
thisguy
)
elif
type
==
DEDENT
:
del
indents
[
-
1
]
elif
type
==
NEWLINE
:
if
nesting_level
==
0
:
check_equal
=
1
elif
type
==
COMMENT
:
pass
elif
check_equal
:
check_equal
=
0
thisguy
=
Whitespace
(
line
)
if
not
indents
[
-
1
]
.
equal
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_equal_witness
(
thisguy
)
msg
=
"indent not equal e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
if
type
==
OP
and
token
in
(
'{'
,
'['
,
'('
):
nesting_level
=
nesting_level
+
1
elif
type
==
OP
and
token
in
(
'}'
,
']'
,
')'
):
if
nesting_level
==
0
:
raise
NannyNag
(
start
[
0
],
"unbalanced bracket '"
+
token
+
"'"
,
line
)
nesting_level
=
nesting_level
-
1
# unpatched version of tokenize
nesting_level
=
0
indents
=
[]
check_equal
=
0
def
reset_globals
():
global
nesting_level
,
indents
,
check_equal
nesting_level
=
check_equal
=
0
indents
=
[
Whitespace
(
""
)]
def
tokeneater
(
type
,
token
,
start
,
end
,
line
,
INDENT
=
tokenize
.
INDENT
,
DEDENT
=
tokenize
.
DEDENT
,
NEWLINE
=
tokenize
.
NEWLINE
,
COMMENT
=
tokenize
.
COMMENT
,
OP
=
tokenize
.
OP
):
global
nesting_level
,
indents
,
check_equal
if
type
==
INDENT
:
check_equal
=
0
thisguy
=
Whitespace
(
token
)
if
not
indents
[
-
1
]
.
less
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_less_witness
(
thisguy
)
msg
=
"indent not greater e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
indents
.
append
(
thisguy
)
elif
type
==
DEDENT
:
del
indents
[
-
1
]
elif
type
==
NEWLINE
:
if
nesting_level
==
0
:
check_equal
=
1
elif
type
==
COMMENT
:
pass
elif
check_equal
:
check_equal
=
0
thisguy
=
Whitespace
(
line
)
if
not
indents
[
-
1
]
.
equal
(
thisguy
):
witness
=
indents
[
-
1
]
.
not_equal_witness
(
thisguy
)
msg
=
"indent not equal e.g. "
+
format_witnesses
(
witness
)
raise
NannyNag
(
start
[
0
],
msg
,
line
)
if
type
==
OP
and
token
in
(
'{'
,
'['
,
'('
):
nesting_level
=
nesting_level
+
1
elif
type
==
OP
and
token
in
(
'}'
,
']'
,
')'
):
if
nesting_level
==
0
:
raise
NannyNag
(
start
[
0
],
"unbalanced bracket '"
+
token
+
"'"
,
line
)
nesting_level
=
nesting_level
-
1
if
__name__
==
'__main__'
:
main
()
Lib/telnetlib.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -11,7 +11,7 @@ Example:
>>> print tn.read_all()
Login Name TTY Idle When Where
guido Guido van Rossum pts/2 <Dec 2 11:10> snag.cnri.reston..
>>>
Note that read_all() won't read until eof -- it just reads some data
...
...
@@ -250,7 +250,7 @@ class Telnet:
def
read_very_eager
(
self
):
"""Read everything that's possible without blocking in I/O (eager).
Raise EOFError if connection closed and no cooked data
available. Return '' if no cooked data available otherwise.
Don't block unless in the midst of an IAC sequence.
...
...
@@ -278,7 +278,7 @@ class Telnet:
def
read_lazy
(
self
):
"""Process and return data that's already in the queues (lazy).
Raise EOFError if connection closed and no data available.
Return '' if no cooked data available otherwise. Don't block
unless in the midst of an IAC sequence.
...
...
Lib/tempfile.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -26,10 +26,10 @@ def gettempdir():
elif
os
.
name
==
'mac'
:
import
macfs
,
MACFS
try
:
refnum
,
dirid
=
macfs
.
FindFolder
(
MACFS
.
kOnSystemDisk
,
MACFS
.
kTemporaryFolderType
,
1
)
dirname
=
macfs
.
FSSpec
((
refnum
,
dirid
,
''
))
.
as_pathname
()
attempdirs
.
insert
(
0
,
dirname
)
refnum
,
dirid
=
macfs
.
FindFolder
(
MACFS
.
kOnSystemDisk
,
MACFS
.
kTemporaryFolderType
,
1
)
dirname
=
macfs
.
FSSpec
((
refnum
,
dirid
,
''
))
.
as_pathname
()
attempdirs
.
insert
(
0
,
dirname
)
except
macfs
.
error
:
pass
for
envname
in
'TMPDIR'
,
'TEMP'
,
'TMP'
:
...
...
@@ -38,27 +38,27 @@ def gettempdir():
testfile
=
gettempprefix
()
+
'test'
for
dir
in
attempdirs
:
try
:
filename
=
os
.
path
.
join
(
dir
,
testfile
)
if
os
.
name
==
'posix'
:
try
:
fd
=
os
.
open
(
filename
,
os
.
O_RDWR
|
os
.
O_CREAT
|
os
.
O_EXCL
,
0700
)
except
OSError
:
pass
else
:
fp
=
os
.
fdopen
(
fd
,
'w'
)
fp
.
write
(
'blat'
)
fp
.
close
()
os
.
unlink
(
filename
)
del
fp
,
fd
tempdir
=
dir
break
else
:
fp
=
open
(
filename
,
'w'
)
fp
.
write
(
'blat'
)
fp
.
close
()
os
.
unlink
(
filename
)
tempdir
=
dir
break
filename
=
os
.
path
.
join
(
dir
,
testfile
)
if
os
.
name
==
'posix'
:
try
:
fd
=
os
.
open
(
filename
,
os
.
O_RDWR
|
os
.
O_CREAT
|
os
.
O_EXCL
,
0700
)
except
OSError
:
pass
else
:
fp
=
os
.
fdopen
(
fd
,
'w'
)
fp
.
write
(
'blat'
)
fp
.
close
()
os
.
unlink
(
filename
)
del
fp
,
fd
tempdir
=
dir
break
else
:
fp
=
open
(
filename
,
'w'
)
fp
.
write
(
'blat'
)
fp
.
close
()
os
.
unlink
(
filename
)
tempdir
=
dir
break
except
IOError
:
pass
if
tempdir
is
None
:
...
...
Lib/threading.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -65,7 +65,7 @@ def RLock(*args, **kwargs):
return
apply
(
_RLock
,
args
,
kwargs
)
class
_RLock
(
_Verbose
):
def
__init__
(
self
,
verbose
=
None
):
_Verbose
.
__init__
(
self
,
verbose
)
self
.
__block
=
_allocate_lock
()
...
...
@@ -440,7 +440,7 @@ class Thread(_Verbose):
def
isAlive
(
self
):
assert
self
.
__initialized
,
"Thread.__init__() not called"
return
self
.
__started
and
not
self
.
__stopped
def
isDaemon
(
self
):
assert
self
.
__initialized
,
"Thread.__init__() not called"
return
self
.
__daemonic
...
...
@@ -496,7 +496,7 @@ def _pickSomeNonDaemonThread():
# when we exit (conform previous semantics).
class
_DummyThread
(
Thread
):
def
__init__
(
self
):
Thread
.
__init__
(
self
,
name
=
_newname
(
"Dummy-
%
d"
))
self
.
_Thread__started
=
1
...
...
Lib/toaiff.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -54,51 +54,51 @@ uncompress.append('uncompress', '--')
class
error
(
Exception
):
pass
pass
def
toaiff
(
filename
):
temps
=
[]
ret
=
None
try
:
ret
=
_toaiff
(
filename
,
temps
)
finally
:
for
temp
in
temps
[:]:
if
temp
!=
ret
:
try
:
os
.
unlink
(
temp
)
except
os
.
error
:
pass
temps
.
remove
(
temp
)
return
ret
temps
=
[]
ret
=
None
try
:
ret
=
_toaiff
(
filename
,
temps
)
finally
:
for
temp
in
temps
[:]:
if
temp
!=
ret
:
try
:
os
.
unlink
(
temp
)
except
os
.
error
:
pass
temps
.
remove
(
temp
)
return
ret
def
_toaiff
(
filename
,
temps
):
if
filename
[
-
2
:]
==
'.Z'
:
fname
=
tempfile
.
mktemp
()
temps
.
append
(
fname
)
sts
=
uncompress
.
copy
(
filename
,
fname
)
if
sts
:
raise
error
,
filename
+
': uncompress failed'
else
:
fname
=
filename
try
:
ftype
=
sndhdr
.
whathdr
(
fname
)
if
ftype
:
ftype
=
ftype
[
0
]
# All we're interested in
except
IOError
:
if
type
(
msg
)
==
type
(())
and
len
(
msg
)
==
2
and
\
type
(
msg
[
0
])
==
type
(
0
)
and
type
(
msg
[
1
])
==
type
(
''
):
msg
=
msg
[
1
]
if
type
(
msg
)
!=
type
(
''
):
msg
=
`msg`
raise
error
,
filename
+
': '
+
msg
if
ftype
==
'aiff'
:
return
fname
if
ftype
is
None
or
not
table
.
has_key
(
ftype
):
raise
error
,
\
filename
+
': unsupported audio file type '
+
`ftype`
temp
=
tempfile
.
mktemp
()
temps
.
append
(
temp
)
sts
=
table
[
ftype
]
.
copy
(
fname
,
temp
)
if
sts
:
raise
error
,
filename
+
': conversion to aiff failed'
return
temp
if
filename
[
-
2
:]
==
'.Z'
:
fname
=
tempfile
.
mktemp
()
temps
.
append
(
fname
)
sts
=
uncompress
.
copy
(
filename
,
fname
)
if
sts
:
raise
error
,
filename
+
': uncompress failed'
else
:
fname
=
filename
try
:
ftype
=
sndhdr
.
whathdr
(
fname
)
if
ftype
:
ftype
=
ftype
[
0
]
# All we're interested in
except
IOError
:
if
type
(
msg
)
==
type
(())
and
len
(
msg
)
==
2
and
\
type
(
msg
[
0
])
==
type
(
0
)
and
type
(
msg
[
1
])
==
type
(
''
):
msg
=
msg
[
1
]
if
type
(
msg
)
!=
type
(
''
):
msg
=
`msg`
raise
error
,
filename
+
': '
+
msg
if
ftype
==
'aiff'
:
return
fname
if
ftype
is
None
or
not
table
.
has_key
(
ftype
):
raise
error
,
\
filename
+
': unsupported audio file type '
+
`ftype`
temp
=
tempfile
.
mktemp
()
temps
.
append
(
temp
)
sts
=
table
[
ftype
]
.
copy
(
fname
,
temp
)
if
sts
:
raise
error
,
filename
+
': conversion to aiff failed'
return
temp
Lib/tokenize.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -215,4 +215,3 @@ if __name__ == '__main__': # testing
import
sys
if
len
(
sys
.
argv
)
>
1
:
tokenize
(
open
(
sys
.
argv
[
1
])
.
readline
)
else
:
tokenize
(
sys
.
stdin
.
readline
)
Lib/traceback.py
Dosyayı görüntüle @
b90f89a4
This diff is collapsed.
Click to expand it.
Lib/tty.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -5,7 +5,7 @@
from
TERMIOS
import
*
from
termios
import
*
# Indexes for termios list.
# Indexes for termios list.
IFLAG
=
0
OFLAG
=
1
CFLAG
=
2
...
...
@@ -15,22 +15,21 @@ OSPEED = 5
CC
=
6
def
setraw
(
fd
,
when
=
TCSAFLUSH
):
"""Put terminal into a raw mode."""
mode
=
tcgetattr
(
fd
)
mode
[
IFLAG
]
=
mode
[
IFLAG
]
&
~
(
BRKINT
|
ICRNL
|
INPCK
|
ISTRIP
|
IXON
)
mode
[
OFLAG
]
=
mode
[
OFLAG
]
&
~
(
OPOST
)
mode
[
CFLAG
]
=
mode
[
CFLAG
]
&
~
(
CSIZE
|
PARENB
)
mode
[
CFLAG
]
=
mode
[
CFLAG
]
|
CS8
mode
[
LFLAG
]
=
mode
[
LFLAG
]
&
~
(
ECHO
|
ICANON
|
IEXTEN
|
ISIG
)
mode
[
CC
][
VMIN
]
=
1
mode
[
CC
][
VTIME
]
=
0
tcsetattr
(
fd
,
when
,
mode
)
"""Put terminal into a raw mode."""
mode
=
tcgetattr
(
fd
)
mode
[
IFLAG
]
=
mode
[
IFLAG
]
&
~
(
BRKINT
|
ICRNL
|
INPCK
|
ISTRIP
|
IXON
)
mode
[
OFLAG
]
=
mode
[
OFLAG
]
&
~
(
OPOST
)
mode
[
CFLAG
]
=
mode
[
CFLAG
]
&
~
(
CSIZE
|
PARENB
)
mode
[
CFLAG
]
=
mode
[
CFLAG
]
|
CS8
mode
[
LFLAG
]
=
mode
[
LFLAG
]
&
~
(
ECHO
|
ICANON
|
IEXTEN
|
ISIG
)
mode
[
CC
][
VMIN
]
=
1
mode
[
CC
][
VTIME
]
=
0
tcsetattr
(
fd
,
when
,
mode
)
def
setcbreak
(
fd
,
when
=
TCSAFLUSH
):
"""Put terminal into a cbreak mode."""
mode
=
tcgetattr
(
fd
)
mode
[
LFLAG
]
=
mode
[
LFLAG
]
&
~
(
ECHO
|
ICANON
)
mode
[
CC
][
VMIN
]
=
1
mode
[
CC
][
VTIME
]
=
0
tcsetattr
(
fd
,
when
,
mode
)
"""Put terminal into a cbreak mode."""
mode
=
tcgetattr
(
fd
)
mode
[
LFLAG
]
=
mode
[
LFLAG
]
&
~
(
ECHO
|
ICANON
)
mode
[
CC
][
VMIN
]
=
1
mode
[
CC
][
VTIME
]
=
0
tcsetattr
(
fd
,
when
,
mode
)
Lib/tzparse.py
Dosyayı görüntüle @
b90f89a4
...
...
@@ -4,90 +4,90 @@
# XXX Only the typical form "XXXhhYYY;ddd/hh,ddd/hh" is currently supported.
tzpat
=
(
'^([A-Z][A-Z][A-Z])([-+]?[0-9]+)([A-Z][A-Z][A-Z]);'
'([0-9]+)/([0-9]+),([0-9]+)/([0-9]+)$'
)
'([0-9]+)/([0-9]+),([0-9]+)/([0-9]+)$'
)
tzprog
=
None
def
tzparse
(
tzstr
):
"""Given a timezone spec, return a tuple of information
(tzname, delta, dstname, daystart, hourstart, dayend, hourend),
where 'tzname' is the name of the timezone, 'delta' is the offset
in hours from GMT, 'dstname' is the name of the daylight-saving
timezone, and 'daystart'/'hourstart' and 'dayend'/'hourend'
specify the starting and ending points for daylight saving time."""
global
tzprog
if
tzprog
is
None
:
import
re
tzprog
=
re
.
compile
(
tzpat
)
match
=
tzprog
.
match
(
tzstr
)
if
not
match
:
raise
ValueError
,
'not the TZ syntax I understand'
subs
=
[]
for
i
in
range
(
1
,
8
):
subs
.
append
(
match
.
group
(
i
))
for
i
in
(
1
,
3
,
4
,
5
,
6
):
subs
[
i
]
=
eval
(
subs
[
i
])
[
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
]
=
subs
return
(
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
)
"""Given a timezone spec, return a tuple of information
(tzname, delta, dstname, daystart, hourstart, dayend, hourend),
where 'tzname' is the name of the timezone, 'delta' is the offset
in hours from GMT, 'dstname' is the name of the daylight-saving
timezone, and 'daystart'/'hourstart' and 'dayend'/'hourend'
specify the starting and ending points for daylight saving time."""
global
tzprog
if
tzprog
is
None
:
import
re
tzprog
=
re
.
compile
(
tzpat
)
match
=
tzprog
.
match
(
tzstr
)
if
not
match
:
raise
ValueError
,
'not the TZ syntax I understand'
subs
=
[]
for
i
in
range
(
1
,
8
):
subs
.
append
(
match
.
group
(
i
))
for
i
in
(
1
,
3
,
4
,
5
,
6
):
subs
[
i
]
=
eval
(
subs
[
i
])
[
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
]
=
subs
return
(
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
)
def
tzlocaltime
(
secs
,
params
):
"""Given a Unix time in seconds and a tuple of information about
a timezone as returned by tzparse(), return the local time in the
form (year, month, day, hour, min, sec, yday, wday, tzname)."""
import
time
(
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
)
=
params
year
,
month
,
days
,
hours
,
mins
,
secs
,
yday
,
wday
,
isdst
=
\
time
.
gmtime
(
secs
-
delta
*
3600
)
if
(
daystart
,
hourstart
)
<=
(
yday
+
1
,
hours
)
<
(
dayend
,
hourend
):
tzname
=
dstname
hours
=
hours
+
1
return
year
,
month
,
days
,
hours
,
mins
,
secs
,
yday
,
wday
,
tzname
"""Given a Unix time in seconds and a tuple of information about
a timezone as returned by tzparse(), return the local time in the
form (year, month, day, hour, min, sec, yday, wday, tzname)."""
import
time
(
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
)
=
params
year
,
month
,
days
,
hours
,
mins
,
secs
,
yday
,
wday
,
isdst
=
\
time
.
gmtime
(
secs
-
delta
*
3600
)
if
(
daystart
,
hourstart
)
<=
(
yday
+
1
,
hours
)
<
(
dayend
,
hourend
):
tzname
=
dstname
hours
=
hours
+
1
return
year
,
month
,
days
,
hours
,
mins
,
secs
,
yday
,
wday
,
tzname
def
tzset
():
"""Determine the current timezone from the "TZ" environment variable."""
global
tzparams
,
timezone
,
altzone
,
daylight
,
tzname
import
os
tzstr
=
os
.
environ
[
'TZ'
]
tzparams
=
tzparse
(
tzstr
)
timezone
=
tzparams
[
1
]
*
3600
altzone
=
timezone
-
3600
daylight
=
1
tzname
=
tzparams
[
0
],
tzparams
[
2
]
"""Determine the current timezone from the "TZ" environment variable."""
global
tzparams
,
timezone
,
altzone
,
daylight
,
tzname
import
os
tzstr
=
os
.
environ
[
'TZ'
]
tzparams
=
tzparse
(
tzstr
)
timezone
=
tzparams
[
1
]
*
3600
altzone
=
timezone
-
3600
daylight
=
1
tzname
=
tzparams
[
0
],
tzparams
[
2
]
def
isdst
(
secs
):
"""Return true if daylight-saving time is in effect for the given
Unix time in the current timezone."""
import
time
(
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
)
=
\
tzparams
year
,
month
,
days
,
hours
,
mins
,
secs
,
yday
,
wday
,
isdst
=
\
time
.
gmtime
(
secs
-
delta
*
3600
)
return
(
daystart
,
hourstart
)
<=
(
yday
+
1
,
hours
)
<
(
dayend
,
hourend
)
"""Return true if daylight-saving time is in effect for the given
Unix time in the current timezone."""
import
time
(
tzname
,
delta
,
dstname
,
daystart
,
hourstart
,
dayend
,
hourend
)
=
\
tzparams
year
,
month
,
days
,
hours
,
mins
,
secs
,
yday
,
wday
,
isdst
=
\
time
.
gmtime
(
secs
-
delta
*
3600
)
return
(
daystart
,
hourstart
)
<=
(
yday
+
1
,
hours
)
<
(
dayend
,
hourend
)
tzset
()
def
localtime
(
secs
):
"""Get the local time in the current timezone."""
return
tzlocaltime
(
secs
,
tzparams
)
"""Get the local time in the current timezone."""
return
tzlocaltime
(
secs
,
tzparams
)
def
test
():
from
time
import
asctime
,
gmtime
import
time
,
sys
now
=
time
.
time
()
x
=
localtime
(
now
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'now ='
,
now
,
'='
,
asctime
(
tm
),
x
[
-
1
]
now
=
now
-
now
%
(
24
*
3600
)
if
sys
.
argv
[
1
:]:
now
=
now
+
eval
(
sys
.
argv
[
1
])
x
=
gmtime
(
now
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'gmtime ='
,
now
,
'='
,
asctime
(
tm
),
'yday ='
,
x
[
-
2
]
jan1
=
now
-
x
[
-
2
]
*
24
*
3600
x
=
localtime
(
jan1
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'jan1 ='
,
jan1
,
'='
,
asctime
(
tm
),
x
[
-
1
]
for
d
in
range
(
85
,
95
)
+
range
(
265
,
275
):
t
=
jan1
+
d
*
24
*
3600
x
=
localtime
(
t
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'd ='
,
d
,
't ='
,
t
,
'='
,
asctime
(
tm
),
x
[
-
1
]
from
time
import
asctime
,
gmtime
import
time
,
sys
now
=
time
.
time
()
x
=
localtime
(
now
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'now ='
,
now
,
'='
,
asctime
(
tm
),
x
[
-
1
]
now
=
now
-
now
%
(
24
*
3600
)
if
sys
.
argv
[
1
:]:
now
=
now
+
eval
(
sys
.
argv
[
1
])
x
=
gmtime
(
now
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'gmtime ='
,
now
,
'='
,
asctime
(
tm
),
'yday ='
,
x
[
-
2
]
jan1
=
now
-
x
[
-
2
]
*
24
*
3600
x
=
localtime
(
jan1
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'jan1 ='
,
jan1
,
'='
,
asctime
(
tm
),
x
[
-
1
]
for
d
in
range
(
85
,
95
)
+
range
(
265
,
275
):
t
=
jan1
+
d
*
24
*
3600
x
=
localtime
(
t
)
tm
=
x
[:
-
1
]
+
(
0
,)
print
'd ='
,
d
,
't ='
,
t
,
'='
,
asctime
(
tm
),
x
[
-
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