Linux premium155.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
LiteSpeed
: 162.0.235.200 | : 3.145.33.244
Cant Read [ /etc/named.conf ]
7.4.33
varifktc
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
opt /
alt /
python27 /
lib64 /
python2.7 /
[ HOME SHELL ]
Name
Size
Permission
Action
bsddb
[ DIR ]
drwxr-xr-x
compiler
[ DIR ]
drwxr-xr-x
config
[ DIR ]
drwxr-xr-x
ctypes
[ DIR ]
drwxr-xr-x
curses
[ DIR ]
drwxr-xr-x
distutils
[ DIR ]
drwxr-xr-x
email
[ DIR ]
drwxr-xr-x
encodings
[ DIR ]
drwxr-xr-x
ensurepip
[ DIR ]
drwxr-xr-x
hotshot
[ DIR ]
drwxr-xr-x
idlelib
[ DIR ]
drwxr-xr-x
importlib
[ DIR ]
drwxr-xr-x
json
[ DIR ]
drwxr-xr-x
lib-dynload
[ DIR ]
drwxr-xr-x
lib2to3
[ DIR ]
drwxr-xr-x
logging
[ DIR ]
drwxr-xr-x
multiprocessing
[ DIR ]
drwxr-xr-x
plat-linux2
[ DIR ]
drwxr-xr-x
pydoc_data
[ DIR ]
drwxr-xr-x
site-packages
[ DIR ]
drwxr-xr-x
sqlite3
[ DIR ]
drwxr-xr-x
test
[ DIR ]
drwxr-xr-x
unittest
[ DIR ]
drwxr-xr-x
wsgiref
[ DIR ]
drwxr-xr-x
xml
[ DIR ]
drwxr-xr-x
BaseHTTPServer.py
22.21
KB
-rw-r--r--
BaseHTTPServer.pyc
21.47
KB
-rw-r--r--
BaseHTTPServer.pyo
21.47
KB
-rw-r--r--
Bastion.py
5.61
KB
-rw-r--r--
Bastion.pyc
6.69
KB
-rw-r--r--
Bastion.pyo
6.69
KB
-rw-r--r--
CGIHTTPServer.py
12.78
KB
-rw-r--r--
CGIHTTPServer.pyc
10.92
KB
-rw-r--r--
CGIHTTPServer.pyo
10.92
KB
-rw-r--r--
ConfigParser.py
27.1
KB
-rw-r--r--
ConfigParser.pyc
25.37
KB
-rw-r--r--
ConfigParser.pyo
25.37
KB
-rw-r--r--
Cookie.py
25.92
KB
-rw-r--r--
Cookie.pyc
22.61
KB
-rw-r--r--
Cookie.pyo
22.61
KB
-rw-r--r--
DocXMLRPCServer.py
10.52
KB
-rw-r--r--
DocXMLRPCServer.pyc
10.2
KB
-rw-r--r--
DocXMLRPCServer.pyo
10.09
KB
-rw-r--r--
HTMLParser.py
16.77
KB
-rw-r--r--
HTMLParser.pyc
13.81
KB
-rw-r--r--
HTMLParser.pyo
13.51
KB
-rw-r--r--
MimeWriter.py
6.33
KB
-rw-r--r--
MimeWriter.pyc
7.31
KB
-rw-r--r--
MimeWriter.pyo
7.31
KB
-rw-r--r--
Queue.py
8.38
KB
-rw-r--r--
Queue.pyc
9.56
KB
-rw-r--r--
Queue.pyo
9.56
KB
-rw-r--r--
SimpleHTTPServer.py
7.81
KB
-rw-r--r--
SimpleHTTPServer.pyc
7.96
KB
-rw-r--r--
SimpleHTTPServer.pyo
7.96
KB
-rw-r--r--
SimpleXMLRPCServer.py
25.21
KB
-rw-r--r--
SimpleXMLRPCServer.pyc
22.78
KB
-rw-r--r--
SimpleXMLRPCServer.pyo
22.78
KB
-rw-r--r--
SocketServer.py
23.39
KB
-rw-r--r--
SocketServer.pyc
24.25
KB
-rw-r--r--
SocketServer.pyo
24.25
KB
-rw-r--r--
StringIO.py
10.41
KB
-rw-r--r--
StringIO.pyc
11.45
KB
-rw-r--r--
StringIO.pyo
11.45
KB
-rw-r--r--
UserDict.py
6.89
KB
-rw-r--r--
UserDict.pyc
10.05
KB
-rw-r--r--
UserDict.pyo
10.05
KB
-rw-r--r--
UserList.py
3.56
KB
-rw-r--r--
UserList.pyc
6.85
KB
-rw-r--r--
UserList.pyo
6.85
KB
-rw-r--r--
UserString.py
9.46
KB
-rwxr-xr-x
UserString.pyc
15.38
KB
-rw-r--r--
UserString.pyo
15.38
KB
-rw-r--r--
_LWPCookieJar.py
6.4
KB
-rw-r--r--
_LWPCookieJar.pyc
5.38
KB
-rw-r--r--
_LWPCookieJar.pyo
5.38
KB
-rw-r--r--
_MozillaCookieJar.py
5.66
KB
-rw-r--r--
_MozillaCookieJar.pyc
4.41
KB
-rw-r--r--
_MozillaCookieJar.pyo
4.37
KB
-rw-r--r--
__future__.py
4.28
KB
-rw-r--r--
__future__.pyc
4.2
KB
-rw-r--r--
__future__.pyo
4.2
KB
-rw-r--r--
__phello__.foo.py
64
B
-rw-r--r--
__phello__.foo.pyc
138
B
-rw-r--r--
__phello__.foo.pyo
138
B
-rw-r--r--
_abcoll.py
18.18
KB
-rw-r--r--
_abcoll.pyc
26.4
KB
-rw-r--r--
_abcoll.pyo
26.4
KB
-rw-r--r--
_osx_support.py
18.65
KB
-rw-r--r--
_osx_support.pyc
11.72
KB
-rw-r--r--
_osx_support.pyo
11.72
KB
-rw-r--r--
_pyio.py
68
KB
-rw-r--r--
_pyio.pyc
65.41
KB
-rw-r--r--
_pyio.pyo
65.41
KB
-rw-r--r--
_strptime.py
20.24
KB
-rw-r--r--
_strptime.pyc
15.07
KB
-rw-r--r--
_strptime.pyo
15.07
KB
-rw-r--r--
_sysconfigdata.py
20.65
KB
-rw-r--r--
_sysconfigdata.pyc
23.69
KB
-rw-r--r--
_sysconfigdata.pyo
23.69
KB
-rw-r--r--
_threading_local.py
7.09
KB
-rw-r--r--
_threading_local.pyc
6.34
KB
-rw-r--r--
_threading_local.pyo
6.34
KB
-rw-r--r--
_weakrefset.py
5.77
KB
-rw-r--r--
_weakrefset.pyc
10.06
KB
-rw-r--r--
_weakrefset.pyo
10.06
KB
-rw-r--r--
abc.py
6.98
KB
-rw-r--r--
abc.pyc
6.14
KB
-rw-r--r--
abc.pyo
6.08
KB
-rw-r--r--
aifc.py
33.77
KB
-rw-r--r--
aifc.pyc
30.67
KB
-rw-r--r--
aifc.pyo
30.67
KB
-rw-r--r--
antigravity.py
60
B
-rw-r--r--
antigravity.pyc
216
B
-rw-r--r--
antigravity.pyo
216
B
-rw-r--r--
anydbm.py
2.6
KB
-rw-r--r--
anydbm.pyc
2.77
KB
-rw-r--r--
anydbm.pyo
2.77
KB
-rw-r--r--
argparse.py
87.14
KB
-rw-r--r--
argparse.pyc
64.83
KB
-rw-r--r--
argparse.pyo
64.67
KB
-rw-r--r--
ast.py
11.53
KB
-rw-r--r--
ast.pyc
12.94
KB
-rw-r--r--
ast.pyo
12.94
KB
-rw-r--r--
asynchat.py
11.31
KB
-rw-r--r--
asynchat.pyc
8.98
KB
-rw-r--r--
asynchat.pyo
8.98
KB
-rw-r--r--
asyncore.py
20.45
KB
-rw-r--r--
asyncore.pyc
19.2
KB
-rw-r--r--
asyncore.pyo
19.2
KB
-rw-r--r--
atexit.py
1.67
KB
-rw-r--r--
atexit.pyc
2.23
KB
-rw-r--r--
atexit.pyo
2.23
KB
-rw-r--r--
audiodev.py
7.42
KB
-rw-r--r--
audiodev.pyc
8.61
KB
-rw-r--r--
audiodev.pyo
8.61
KB
-rw-r--r--
base64.py
11.53
KB
-rwxr-xr-x
base64.pyc
11.26
KB
-rw-r--r--
base64.pyo
11.26
KB
-rw-r--r--
bdb.py
21.21
KB
-rw-r--r--
bdb.pyc
19.43
KB
-rw-r--r--
bdb.pyo
19.43
KB
-rw-r--r--
binhex.py
14.35
KB
-rw-r--r--
binhex.pyc
15.75
KB
-rw-r--r--
binhex.pyo
15.75
KB
-rw-r--r--
bisect.py
2.53
KB
-rw-r--r--
bisect.pyc
3.06
KB
-rw-r--r--
bisect.pyo
3.06
KB
-rw-r--r--
cProfile.py
6.42
KB
-rwxr-xr-x
cProfile.pyc
6.42
KB
-rw-r--r--
cProfile.pyo
6.42
KB
-rw-r--r--
calendar.py
22.84
KB
-rw-r--r--
calendar.pyc
28.26
KB
-rw-r--r--
calendar.pyo
28.26
KB
-rw-r--r--
cgi.py
34.96
KB
-rwxr-xr-x
cgi.pyc
33.24
KB
-rw-r--r--
cgi.pyo
33.24
KB
-rw-r--r--
cgitb.py
11.89
KB
-rw-r--r--
cgitb.pyc
12.08
KB
-rw-r--r--
cgitb.pyo
12.08
KB
-rw-r--r--
chunk.py
5.29
KB
-rw-r--r--
chunk.pyc
5.61
KB
-rw-r--r--
chunk.pyo
5.61
KB
-rw-r--r--
cmd.py
14.67
KB
-rw-r--r--
cmd.pyc
13.98
KB
-rw-r--r--
cmd.pyo
13.98
KB
-rw-r--r--
code.py
9.95
KB
-rw-r--r--
code.pyc
10.29
KB
-rw-r--r--
code.pyo
10.29
KB
-rw-r--r--
codecs.py
35.3
KB
-rw-r--r--
codecs.pyc
37.15
KB
-rw-r--r--
codecs.pyo
37.15
KB
-rw-r--r--
codeop.py
5.86
KB
-rw-r--r--
codeop.pyc
6.57
KB
-rw-r--r--
codeop.pyo
6.57
KB
-rw-r--r--
collections.py
27.15
KB
-rw-r--r--
collections.pyc
26.21
KB
-rw-r--r--
collections.pyo
26.16
KB
-rw-r--r--
colorsys.py
3.6
KB
-rw-r--r--
colorsys.pyc
4
KB
-rw-r--r--
colorsys.pyo
4
KB
-rw-r--r--
commands.py
2.49
KB
-rw-r--r--
commands.pyc
2.49
KB
-rw-r--r--
commands.pyo
2.49
KB
-rw-r--r--
compileall.py
7.58
KB
-rw-r--r--
compileall.pyc
6.93
KB
-rw-r--r--
compileall.pyo
6.93
KB
-rw-r--r--
contextlib.py
4.32
KB
-rw-r--r--
contextlib.pyc
4.5
KB
-rw-r--r--
contextlib.pyo
4.5
KB
-rw-r--r--
cookielib.py
63.95
KB
-rw-r--r--
cookielib.pyc
54.67
KB
-rw-r--r--
cookielib.pyo
54.49
KB
-rw-r--r--
copy.py
11.26
KB
-rw-r--r--
copy.pyc
12.21
KB
-rw-r--r--
copy.pyo
12.13
KB
-rw-r--r--
copy_reg.py
6.81
KB
-rw-r--r--
copy_reg.pyc
5.19
KB
-rw-r--r--
copy_reg.pyo
5.14
KB
-rw-r--r--
crypt.py
2.24
KB
-rw-r--r--
crypt.pyc
2.95
KB
-rw-r--r--
crypt.pyo
2.95
KB
-rw-r--r--
csv.py
16.32
KB
-rw-r--r--
csv.pyc
13.56
KB
-rw-r--r--
csv.pyo
13.56
KB
-rw-r--r--
dbhash.py
498
B
-rw-r--r--
dbhash.pyc
744
B
-rw-r--r--
dbhash.pyo
744
B
-rw-r--r--
decimal.py
216.73
KB
-rw-r--r--
decimal.pyc
171.36
KB
-rw-r--r--
decimal.pyo
171.36
KB
-rw-r--r--
difflib.py
80.4
KB
-rw-r--r--
difflib.pyc
61.13
KB
-rw-r--r--
difflib.pyo
61.08
KB
-rw-r--r--
dircache.py
1.1
KB
-rw-r--r--
dircache.pyc
1.59
KB
-rw-r--r--
dircache.pyo
1.59
KB
-rw-r--r--
dis.py
6.35
KB
-rw-r--r--
dis.pyc
6.18
KB
-rw-r--r--
dis.pyo
6.18
KB
-rw-r--r--
doctest.py
102.63
KB
-rw-r--r--
doctest.pyc
83.21
KB
-rw-r--r--
doctest.pyo
82.93
KB
-rw-r--r--
dumbdbm.py
8.93
KB
-rw-r--r--
dumbdbm.pyc
6.83
KB
-rw-r--r--
dumbdbm.pyo
6.83
KB
-rw-r--r--
dummy_thread.py
4.31
KB
-rw-r--r--
dummy_thread.pyc
5.46
KB
-rw-r--r--
dummy_thread.pyo
5.46
KB
-rw-r--r--
dummy_threading.py
2.74
KB
-rw-r--r--
dummy_threading.pyc
1.27
KB
-rw-r--r--
dummy_threading.pyo
1.27
KB
-rw-r--r--
filecmp.py
9.36
KB
-rw-r--r--
filecmp.pyc
9.65
KB
-rw-r--r--
filecmp.pyo
9.65
KB
-rw-r--r--
fileinput.py
13.42
KB
-rw-r--r--
fileinput.pyc
14.54
KB
-rw-r--r--
fileinput.pyo
14.54
KB
-rw-r--r--
fnmatch.py
3.24
KB
-rw-r--r--
fnmatch.pyc
3.61
KB
-rw-r--r--
fnmatch.pyo
3.61
KB
-rw-r--r--
formatter.py
14.56
KB
-rw-r--r--
formatter.pyc
19.71
KB
-rw-r--r--
formatter.pyo
19.71
KB
-rw-r--r--
fpformat.py
4.62
KB
-rw-r--r--
fpformat.pyc
4.69
KB
-rw-r--r--
fpformat.pyo
4.69
KB
-rw-r--r--
fractions.py
21.87
KB
-rw-r--r--
fractions.pyc
19.74
KB
-rw-r--r--
fractions.pyo
19.74
KB
-rw-r--r--
ftplib.py
37.3
KB
-rw-r--r--
ftplib.pyc
34.82
KB
-rw-r--r--
ftplib.pyo
34.82
KB
-rw-r--r--
functools.py
4.69
KB
-rw-r--r--
functools.pyc
6.85
KB
-rw-r--r--
functools.pyo
6.85
KB
-rw-r--r--
genericpath.py
3.13
KB
-rw-r--r--
genericpath.pyc
3.57
KB
-rw-r--r--
genericpath.pyo
3.57
KB
-rw-r--r--
getopt.py
7.15
KB
-rw-r--r--
getopt.pyc
6.63
KB
-rw-r--r--
getopt.pyo
6.58
KB
-rw-r--r--
getpass.py
5.43
KB
-rw-r--r--
getpass.pyc
4.72
KB
-rw-r--r--
getpass.pyo
4.72
KB
-rw-r--r--
gettext.py
22.13
KB
-rw-r--r--
gettext.pyc
18.17
KB
-rw-r--r--
gettext.pyo
18.17
KB
-rw-r--r--
glob.py
3.04
KB
-rw-r--r--
glob.pyc
2.98
KB
-rw-r--r--
glob.pyo
2.98
KB
-rw-r--r--
gzip.py
18.58
KB
-rw-r--r--
gzip.pyc
15.26
KB
-rw-r--r--
gzip.pyo
15.26
KB
-rw-r--r--
hashlib.py
7.66
KB
-rw-r--r--
hashlib.pyc
6.86
KB
-rw-r--r--
hashlib.pyo
6.86
KB
-rw-r--r--
heapq.py
17.87
KB
-rw-r--r--
heapq.pyc
14.45
KB
-rw-r--r--
heapq.pyo
14.45
KB
-rw-r--r--
hmac.py
4.48
KB
-rw-r--r--
hmac.pyc
4.56
KB
-rw-r--r--
hmac.pyo
4.56
KB
-rw-r--r--
htmlentitydefs.py
17.63
KB
-rw-r--r--
htmlentitydefs.pyc
6.23
KB
-rw-r--r--
htmlentitydefs.pyo
6.23
KB
-rw-r--r--
htmllib.py
12.57
KB
-rw-r--r--
htmllib.pyc
20.99
KB
-rw-r--r--
htmllib.pyo
20.99
KB
-rw-r--r--
httplib.py
51.07
KB
-rw-r--r--
httplib.pyc
37.88
KB
-rw-r--r--
httplib.pyo
37.7
KB
-rw-r--r--
ihooks.py
18.54
KB
-rw-r--r--
ihooks.pyc
21.75
KB
-rw-r--r--
ihooks.pyo
21.75
KB
-rw-r--r--
imaplib.py
47.23
KB
-rw-r--r--
imaplib.pyc
45.19
KB
-rw-r--r--
imaplib.pyo
42.49
KB
-rw-r--r--
imghdr.py
3.46
KB
-rw-r--r--
imghdr.pyc
4.93
KB
-rw-r--r--
imghdr.pyo
4.93
KB
-rw-r--r--
imputil.py
25.16
KB
-rw-r--r--
imputil.pyc
15.74
KB
-rw-r--r--
imputil.pyo
15.57
KB
-rw-r--r--
inspect.py
42
KB
-rw-r--r--
inspect.pyc
40.16
KB
-rw-r--r--
inspect.pyo
40.16
KB
-rw-r--r--
io.py
3.24
KB
-rw-r--r--
io.pyc
3.57
KB
-rw-r--r--
io.pyo
3.57
KB
-rw-r--r--
keyword.py
1.95
KB
-rwxr-xr-x
keyword.pyc
2.08
KB
-rw-r--r--
keyword.pyo
2.08
KB
-rw-r--r--
linecache.py
3.93
KB
-rw-r--r--
linecache.pyc
3.27
KB
-rw-r--r--
linecache.pyo
3.27
KB
-rw-r--r--
locale.py
100.42
KB
-rw-r--r--
locale.pyc
55.69
KB
-rw-r--r--
locale.pyo
55.69
KB
-rw-r--r--
macpath.py
6.14
KB
-rw-r--r--
macpath.pyc
7.74
KB
-rw-r--r--
macpath.pyo
7.74
KB
-rw-r--r--
macurl2path.py
2.67
KB
-rw-r--r--
macurl2path.pyc
2.24
KB
-rw-r--r--
macurl2path.pyo
2.24
KB
-rw-r--r--
mailbox.py
79.34
KB
-rw-r--r--
mailbox.pyc
77.7
KB
-rw-r--r--
mailbox.pyo
77.65
KB
-rw-r--r--
mailcap.py
7.25
KB
-rw-r--r--
mailcap.pyc
7.08
KB
-rw-r--r--
mailcap.pyo
7.08
KB
-rw-r--r--
markupbase.py
14.3
KB
-rw-r--r--
markupbase.pyc
9.27
KB
-rw-r--r--
markupbase.pyo
9.07
KB
-rw-r--r--
md5.py
358
B
-rw-r--r--
md5.pyc
391
B
-rw-r--r--
md5.pyo
391
B
-rw-r--r--
mhlib.py
32.65
KB
-rw-r--r--
mhlib.pyc
33.98
KB
-rw-r--r--
mhlib.pyo
33.98
KB
-rw-r--r--
mimetools.py
7
KB
-rw-r--r--
mimetools.pyc
8.26
KB
-rw-r--r--
mimetools.pyo
8.26
KB
-rw-r--r--
mimetypes.py
20.54
KB
-rw-r--r--
mimetypes.pyc
18.3
KB
-rw-r--r--
mimetypes.pyo
18.3
KB
-rw-r--r--
mimify.py
14.67
KB
-rwxr-xr-x
mimify.pyc
11.91
KB
-rw-r--r--
mimify.pyo
11.91
KB
-rw-r--r--
modulefinder.py
23.89
KB
-rw-r--r--
modulefinder.pyc
19.12
KB
-rw-r--r--
modulefinder.pyo
19.04
KB
-rw-r--r--
multifile.py
4.71
KB
-rw-r--r--
multifile.pyc
5.48
KB
-rw-r--r--
multifile.pyo
5.44
KB
-rw-r--r--
mutex.py
1.83
KB
-rw-r--r--
mutex.pyc
2.55
KB
-rw-r--r--
mutex.pyo
2.55
KB
-rw-r--r--
netrc.py
5.75
KB
-rw-r--r--
netrc.pyc
4.72
KB
-rw-r--r--
netrc.pyo
4.72
KB
-rw-r--r--
new.py
610
B
-rw-r--r--
new.pyc
875
B
-rw-r--r--
new.pyo
875
B
-rw-r--r--
nntplib.py
20.97
KB
-rw-r--r--
nntplib.pyc
21.11
KB
-rw-r--r--
nntplib.pyo
21.11
KB
-rw-r--r--
ntpath.py
18.97
KB
-rw-r--r--
ntpath.pyc
13.1
KB
-rw-r--r--
ntpath.pyo
13.1
KB
-rw-r--r--
nturl2path.py
2.36
KB
-rw-r--r--
nturl2path.pyc
1.81
KB
-rw-r--r--
nturl2path.pyo
1.81
KB
-rw-r--r--
numbers.py
10.08
KB
-rw-r--r--
numbers.pyc
14.47
KB
-rw-r--r--
numbers.pyo
14.47
KB
-rw-r--r--
opcode.py
5.35
KB
-rw-r--r--
opcode.pyc
6.06
KB
-rw-r--r--
opcode.pyo
6.06
KB
-rw-r--r--
optparse.py
59.77
KB
-rw-r--r--
optparse.pyc
54.41
KB
-rw-r--r--
optparse.pyo
54.33
KB
-rw-r--r--
os.py
25.3
KB
-rw-r--r--
os.pyc
25.76
KB
-rw-r--r--
os.pyo
25.76
KB
-rw-r--r--
os2emxpath.py
4.53
KB
-rw-r--r--
os2emxpath.pyc
4.53
KB
-rw-r--r--
os2emxpath.pyo
4.53
KB
-rw-r--r--
pdb.doc
7.73
KB
-rw-r--r--
pdb.py
45.01
KB
-rwxr-xr-x
pdb.pyc
44.09
KB
-rw-r--r--
pdb.pyo
44.09
KB
-rw-r--r--
pickle.py
44.42
KB
-rw-r--r--
pickle.pyc
38.98
KB
-rw-r--r--
pickle.pyo
38.79
KB
-rw-r--r--
pickletools.py
72.78
KB
-rw-r--r--
pickletools.pyc
56.1
KB
-rw-r--r--
pickletools.pyo
55.26
KB
-rw-r--r--
pipes.py
9.36
KB
-rw-r--r--
pipes.pyc
9.29
KB
-rw-r--r--
pipes.pyo
9.29
KB
-rw-r--r--
pkgutil.py
19.77
KB
-rw-r--r--
pkgutil.pyc
18.93
KB
-rw-r--r--
pkgutil.pyo
18.93
KB
-rw-r--r--
platform.py
51.55
KB
-rwxr-xr-x
platform.pyc
37.7
KB
-rw-r--r--
platform.pyo
37.7
KB
-rw-r--r--
plistlib.py
14.83
KB
-rw-r--r--
plistlib.pyc
19.54
KB
-rw-r--r--
plistlib.pyo
19.46
KB
-rw-r--r--
popen2.py
8.22
KB
-rw-r--r--
popen2.pyc
9.02
KB
-rw-r--r--
popen2.pyo
8.98
KB
-rw-r--r--
poplib.py
12.52
KB
-rw-r--r--
poplib.pyc
13.45
KB
-rw-r--r--
poplib.pyo
13.45
KB
-rw-r--r--
posixfile.py
7.82
KB
-rw-r--r--
posixfile.pyc
7.63
KB
-rw-r--r--
posixfile.pyo
7.63
KB
-rw-r--r--
posixpath.py
13.96
KB
-rw-r--r--
posixpath.pyc
11.49
KB
-rw-r--r--
posixpath.pyo
11.49
KB
-rw-r--r--
pprint.py
11.5
KB
-rw-r--r--
pprint.pyc
10.2
KB
-rw-r--r--
pprint.pyo
10.02
KB
-rw-r--r--
profile.py
22.24
KB
-rwxr-xr-x
profile.pyc
16.57
KB
-rw-r--r--
profile.pyo
16.32
KB
-rw-r--r--
pstats.py
26.09
KB
-rw-r--r--
pstats.pyc
25.19
KB
-rw-r--r--
pstats.pyo
25.19
KB
-rw-r--r--
pty.py
4.94
KB
-rw-r--r--
pty.pyc
4.98
KB
-rw-r--r--
pty.pyo
4.98
KB
-rw-r--r--
py_compile.py
5.8
KB
-rw-r--r--
py_compile.pyc
6.37
KB
-rw-r--r--
py_compile.pyo
6.37
KB
-rw-r--r--
pyclbr.py
13.07
KB
-rw-r--r--
pyclbr.pyc
9.59
KB
-rw-r--r--
pyclbr.pyo
9.59
KB
-rw-r--r--
pydoc.py
93.42
KB
-rwxr-xr-x
pydoc.pyc
92.69
KB
-rw-r--r--
pydoc.pyo
92.63
KB
-rw-r--r--
quopri.py
6.8
KB
-rwxr-xr-x
quopri.pyc
6.56
KB
-rw-r--r--
quopri.pyo
6.56
KB
-rw-r--r--
random.py
31.7
KB
-rw-r--r--
random.pyc
25.65
KB
-rw-r--r--
random.pyo
25.65
KB
-rw-r--r--
re.py
13.11
KB
-rw-r--r--
re.pyc
13.37
KB
-rw-r--r--
re.pyo
13.37
KB
-rw-r--r--
repr.py
4.2
KB
-rw-r--r--
repr.pyc
5.47
KB
-rw-r--r--
repr.pyo
5.47
KB
-rw-r--r--
rexec.py
19.68
KB
-rw-r--r--
rexec.pyc
24
KB
-rw-r--r--
rexec.pyo
24
KB
-rw-r--r--
rfc822.py
32.76
KB
-rw-r--r--
rfc822.pyc
31.83
KB
-rw-r--r--
rfc822.pyo
31.83
KB
-rw-r--r--
rlcompleter.py
5.85
KB
-rw-r--r--
rlcompleter.pyc
6.04
KB
-rw-r--r--
rlcompleter.pyo
6.04
KB
-rw-r--r--
robotparser.py
7.51
KB
-rw-r--r--
robotparser.pyc
8.12
KB
-rw-r--r--
robotparser.pyo
8.12
KB
-rw-r--r--
runpy.py
10.82
KB
-rw-r--r--
runpy.pyc
8.85
KB
-rw-r--r--
runpy.pyo
8.85
KB
-rw-r--r--
sched.py
4.97
KB
-rw-r--r--
sched.pyc
4.99
KB
-rw-r--r--
sched.pyo
4.99
KB
-rw-r--r--
sets.py
18.6
KB
-rw-r--r--
sets.pyc
17.21
KB
-rw-r--r--
sets.pyo
17.21
KB
-rw-r--r--
sgmllib.py
17.46
KB
-rw-r--r--
sgmllib.pyc
15.67
KB
-rw-r--r--
sgmllib.pyo
15.67
KB
-rw-r--r--
sha.py
393
B
-rw-r--r--
sha.pyc
434
B
-rw-r--r--
sha.pyo
434
B
-rw-r--r--
shelve.py
7.99
KB
-rw-r--r--
shelve.pyc
10.36
KB
-rw-r--r--
shelve.pyo
10.36
KB
-rw-r--r--
shlex.py
10.9
KB
-rw-r--r--
shlex.pyc
7.55
KB
-rw-r--r--
shlex.pyo
7.55
KB
-rw-r--r--
shutil.py
19.41
KB
-rw-r--r--
shutil.pyc
19.19
KB
-rw-r--r--
shutil.pyo
19.19
KB
-rw-r--r--
site.py
19.18
KB
-rw-r--r--
site.pyc
19.35
KB
-rw-r--r--
site.pyo
19.35
KB
-rw-r--r--
smtpd.py
18.1
KB
-rwxr-xr-x
smtpd.pyc
15.9
KB
-rw-r--r--
smtpd.pyo
15.9
KB
-rw-r--r--
smtplib.py
31.38
KB
-rwxr-xr-x
smtplib.pyc
30.29
KB
-rw-r--r--
smtplib.pyo
30.29
KB
-rw-r--r--
sndhdr.py
5.83
KB
-rw-r--r--
sndhdr.pyc
7.4
KB
-rw-r--r--
sndhdr.pyo
7.4
KB
-rw-r--r--
socket.py
20.13
KB
-rw-r--r--
socket.pyc
16.15
KB
-rw-r--r--
socket.pyo
16.07
KB
-rw-r--r--
sre.py
384
B
-rw-r--r--
sre.pyc
532
B
-rw-r--r--
sre.pyo
532
B
-rw-r--r--
sre_compile.py
19.36
KB
-rw-r--r--
sre_compile.pyc
12.46
KB
-rw-r--r--
sre_compile.pyo
12.3
KB
-rw-r--r--
sre_constants.py
7.03
KB
-rw-r--r--
sre_constants.pyc
6.11
KB
-rw-r--r--
sre_constants.pyo
6.11
KB
-rw-r--r--
sre_parse.py
29.98
KB
-rw-r--r--
sre_parse.pyc
21.12
KB
-rw-r--r--
sre_parse.pyo
21.12
KB
-rw-r--r--
ssl.py
36.58
KB
-rw-r--r--
ssl.pyc
32.24
KB
-rw-r--r--
ssl.pyo
32.24
KB
-rw-r--r--
stat.py
1.8
KB
-rw-r--r--
stat.pyc
2.81
KB
-rw-r--r--
stat.pyo
2.81
KB
-rw-r--r--
statvfs.py
898
B
-rw-r--r--
statvfs.pyc
633
B
-rw-r--r--
statvfs.pyo
633
B
-rw-r--r--
string.py
21.04
KB
-rw-r--r--
string.pyc
20.63
KB
-rw-r--r--
string.pyo
20.63
KB
-rw-r--r--
stringold.py
12.16
KB
-rw-r--r--
stringold.pyc
12.6
KB
-rw-r--r--
stringold.pyo
12.6
KB
-rw-r--r--
stringprep.py
13.21
KB
-rw-r--r--
stringprep.pyc
14.4
KB
-rw-r--r--
stringprep.pyo
14.33
KB
-rw-r--r--
struct.py
82
B
-rw-r--r--
struct.pyc
252
B
-rw-r--r--
struct.pyo
252
B
-rw-r--r--
subprocess.py
49.34
KB
-rw-r--r--
subprocess.pyc
32.32
KB
-rw-r--r--
subprocess.pyo
32.32
KB
-rw-r--r--
sunau.py
16.82
KB
-rw-r--r--
sunau.pyc
18.57
KB
-rw-r--r--
sunau.pyo
18.57
KB
-rw-r--r--
sunaudio.py
1.37
KB
-rw-r--r--
sunaudio.pyc
2
KB
-rw-r--r--
sunaudio.pyo
2
KB
-rw-r--r--
symbol.py
2.01
KB
-rwxr-xr-x
symbol.pyc
2.98
KB
-rw-r--r--
symbol.pyo
2.98
KB
-rw-r--r--
symtable.py
7.26
KB
-rw-r--r--
symtable.pyc
12.14
KB
-rw-r--r--
symtable.pyo
12.02
KB
-rw-r--r--
sysconfig.py
22.32
KB
-rw-r--r--
sysconfig.pyc
17.73
KB
-rw-r--r--
sysconfig.pyo
17.73
KB
-rw-r--r--
tabnanny.py
11.07
KB
-rwxr-xr-x
tabnanny.pyc
8.31
KB
-rw-r--r--
tabnanny.pyo
8.31
KB
-rw-r--r--
tarfile.py
88.45
KB
-rw-r--r--
tarfile.pyc
76.54
KB
-rw-r--r--
tarfile.pyo
76.54
KB
-rw-r--r--
telnetlib.py
26.4
KB
-rw-r--r--
telnetlib.pyc
23.03
KB
-rw-r--r--
telnetlib.pyo
23.03
KB
-rw-r--r--
tempfile.py
19.09
KB
-rw-r--r--
tempfile.pyc
20.55
KB
-rw-r--r--
tempfile.pyo
20.55
KB
-rw-r--r--
textwrap.py
16.88
KB
-rw-r--r--
textwrap.pyc
11.99
KB
-rw-r--r--
textwrap.pyo
11.9
KB
-rw-r--r--
this.py
1002
B
-rw-r--r--
this.pyc
1.2
KB
-rw-r--r--
this.pyo
1.2
KB
-rw-r--r--
threading.py
46.17
KB
-rw-r--r--
threading.pyc
42.97
KB
-rw-r--r--
threading.pyo
40.84
KB
-rw-r--r--
timeit.py
12.49
KB
-rwxr-xr-x
timeit.pyc
12.06
KB
-rw-r--r--
timeit.pyo
12.06
KB
-rw-r--r--
toaiff.py
3.07
KB
-rw-r--r--
toaiff.pyc
3.08
KB
-rw-r--r--
toaiff.pyo
3.08
KB
-rw-r--r--
token.py
2.85
KB
-rw-r--r--
token.pyc
3.79
KB
-rw-r--r--
token.pyo
3.79
KB
-rw-r--r--
tokenize.py
17.07
KB
-rw-r--r--
tokenize.pyc
14.37
KB
-rw-r--r--
tokenize.pyo
14.31
KB
-rw-r--r--
trace.py
29.19
KB
-rwxr-xr-x
trace.pyc
22.69
KB
-rw-r--r--
trace.pyo
22.63
KB
-rw-r--r--
traceback.py
11.02
KB
-rw-r--r--
traceback.pyc
11.66
KB
-rw-r--r--
traceback.pyo
11.66
KB
-rw-r--r--
tty.py
879
B
-rw-r--r--
tty.pyc
1.32
KB
-rw-r--r--
tty.pyo
1.32
KB
-rw-r--r--
types.py
2.04
KB
-rw-r--r--
types.pyc
2.75
KB
-rw-r--r--
types.pyo
2.75
KB
-rw-r--r--
urllib.py
58.82
KB
-rw-r--r--
urllib.pyc
51.35
KB
-rw-r--r--
urllib.pyo
51.25
KB
-rw-r--r--
urllib2.py
51.31
KB
-rw-r--r--
urllib2.pyc
47.8
KB
-rw-r--r--
urllib2.pyo
47.71
KB
-rw-r--r--
urlparse.py
16.29
KB
-rw-r--r--
urlparse.pyc
15.51
KB
-rw-r--r--
urlparse.pyo
15.51
KB
-rw-r--r--
user.py
1.59
KB
-rw-r--r--
user.pyc
1.7
KB
-rw-r--r--
user.pyo
1.7
KB
-rw-r--r--
uu.py
6.54
KB
-rwxr-xr-x
uu.pyc
4.35
KB
-rw-r--r--
uu.pyo
4.35
KB
-rw-r--r--
uuid.py
22.63
KB
-rw-r--r--
uuid.pyc
23.22
KB
-rw-r--r--
uuid.pyo
23.11
KB
-rw-r--r--
warnings.py
14.48
KB
-rw-r--r--
warnings.pyc
13.49
KB
-rw-r--r--
warnings.pyo
12.71
KB
-rw-r--r--
wave.py
18.15
KB
-rw-r--r--
wave.pyc
20.19
KB
-rw-r--r--
wave.pyo
20.05
KB
-rw-r--r--
weakref.py
14.48
KB
-rw-r--r--
weakref.pyc
16.73
KB
-rw-r--r--
weakref.pyo
16.73
KB
-rw-r--r--
webbrowser.py
22.19
KB
-rwxr-xr-x
webbrowser.pyc
19.86
KB
-rw-r--r--
webbrowser.pyo
19.81
KB
-rw-r--r--
whichdb.py
3.31
KB
-rw-r--r--
whichdb.pyc
2.21
KB
-rw-r--r--
whichdb.pyo
2.21
KB
-rw-r--r--
wsgiref.egg-info
187
B
-rw-r--r--
xdrlib.py
5.93
KB
-rw-r--r--
xdrlib.pyc
10.2
KB
-rw-r--r--
xdrlib.pyo
10.2
KB
-rw-r--r--
xmllib.py
34.05
KB
-rw-r--r--
xmllib.pyc
26.9
KB
-rw-r--r--
xmllib.pyo
26.9
KB
-rw-r--r--
xmlrpclib.py
50.91
KB
-rw-r--r--
xmlrpclib.pyc
44.81
KB
-rw-r--r--
xmlrpclib.pyo
44.63
KB
-rw-r--r--
zipfile.py
58.08
KB
-rw-r--r--
zipfile.pyc
41.92
KB
-rw-r--r--
zipfile.pyo
41.92
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : collections.py
'''This module implements specialized container datatypes providing alternatives to Python's general purpose built-in containers, dict, list, set, and tuple. * namedtuple factory function for creating tuple subclasses with named fields * deque list-like container with fast appends and pops on either end * Counter dict subclass for counting hashable objects * OrderedDict dict subclass that remembers the order entries were added * defaultdict dict subclass that calls a factory function to supply missing values ''' __all__ = ['Counter', 'deque', 'defaultdict', 'namedtuple', 'OrderedDict'] # For bootstrapping reasons, the collection ABCs are defined in _abcoll.py. # They should however be considered an integral part of collections.py. from _abcoll import * import _abcoll __all__ += _abcoll.__all__ from _collections import deque, defaultdict from operator import itemgetter as _itemgetter, eq as _eq from keyword import iskeyword as _iskeyword import sys as _sys import heapq as _heapq from itertools import repeat as _repeat, chain as _chain, starmap as _starmap from itertools import imap as _imap try: from thread import get_ident as _get_ident except ImportError: from dummy_thread import get_ident as _get_ident ################################################################################ ### OrderedDict ################################################################################ class OrderedDict(dict): 'Dictionary that remembers insertion order' # An inherited dict maps keys to values. # The inherited dict provides __getitem__, __len__, __contains__, and get. # The remaining methods are order-aware. # Big-O running times for all methods are the same as regular dictionaries. # The internal self.__map dict maps keys to links in a doubly linked list. # The circular doubly linked list starts and ends with a sentinel element. # The sentinel element never gets deleted (this simplifies the algorithm). # Each link is stored as a list of length three: [PREV, NEXT, KEY]. def __init__(*args, **kwds): '''Initialize an ordered dictionary. The signature is the same as regular dictionaries, but keyword arguments are not recommended because their insertion order is arbitrary. ''' if not args: raise TypeError("descriptor '__init__' of 'OrderedDict' object " "needs an argument") self = args[0] args = args[1:] if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) try: self.__root except AttributeError: self.__root = root = [] # sentinel node root[:] = [root, root, None] self.__map = {} self.__update(*args, **kwds) def __setitem__(self, key, value, dict_setitem=dict.__setitem__): 'od.__setitem__(i, y) <==> od[i]=y' # Setting a new item creates a new link at the end of the linked list, # and the inherited dictionary is updated with the new key/value pair. if key not in self: root = self.__root last = root[0] last[1] = root[0] = self.__map[key] = [last, root, key] return dict_setitem(self, key, value) def __delitem__(self, key, dict_delitem=dict.__delitem__): 'od.__delitem__(y) <==> del od[y]' # Deleting an existing item uses self.__map to find the link which gets # removed by updating the links in the predecessor and successor nodes. dict_delitem(self, key) link_prev, link_next, _ = self.__map.pop(key) link_prev[1] = link_next # update link_prev[NEXT] link_next[0] = link_prev # update link_next[PREV] def __iter__(self): 'od.__iter__() <==> iter(od)' # Traverse the linked list in order. root = self.__root curr = root[1] # start at the first node while curr is not root: yield curr[2] # yield the curr[KEY] curr = curr[1] # move to next node def __reversed__(self): 'od.__reversed__() <==> reversed(od)' # Traverse the linked list in reverse order. root = self.__root curr = root[0] # start at the last node while curr is not root: yield curr[2] # yield the curr[KEY] curr = curr[0] # move to previous node def clear(self): 'od.clear() -> None. Remove all items from od.' root = self.__root root[:] = [root, root, None] self.__map.clear() dict.clear(self) # -- the following methods do not depend on the internal structure -- def keys(self): 'od.keys() -> list of keys in od' return list(self) def values(self): 'od.values() -> list of values in od' return [self[key] for key in self] def items(self): 'od.items() -> list of (key, value) pairs in od' return [(key, self[key]) for key in self] def iterkeys(self): 'od.iterkeys() -> an iterator over the keys in od' return iter(self) def itervalues(self): 'od.itervalues -> an iterator over the values in od' for k in self: yield self[k] def iteritems(self): 'od.iteritems -> an iterator over the (key, value) pairs in od' for k in self: yield (k, self[k]) update = MutableMapping.update __update = update # let subclasses override update without breaking __init__ __marker = object() def pop(self, key, default=__marker): '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised. ''' if key in self: result = self[key] del self[key] return result if default is self.__marker: raise KeyError(key) return default def setdefault(self, key, default=None): 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' if key in self: return self[key] self[key] = default return default def popitem(self, last=True): '''od.popitem() -> (k, v), return and remove a (key, value) pair. Pairs are returned in LIFO order if last is true or FIFO order if false. ''' if not self: raise KeyError('dictionary is empty') key = next(reversed(self) if last else iter(self)) value = self.pop(key) return key, value def __repr__(self, _repr_running={}): 'od.__repr__() <==> repr(od)' call_key = id(self), _get_ident() if call_key in _repr_running: return '...' _repr_running[call_key] = 1 try: if not self: return '%s()' % (self.__class__.__name__,) return '%s(%r)' % (self.__class__.__name__, self.items()) finally: del _repr_running[call_key] def __reduce__(self): 'Return state information for pickling' items = [[k, self[k]] for k in self] inst_dict = vars(self).copy() for k in vars(OrderedDict()): inst_dict.pop(k, None) if inst_dict: return (self.__class__, (items,), inst_dict) return self.__class__, (items,) def copy(self): 'od.copy() -> a shallow copy of od' return self.__class__(self) @classmethod def fromkeys(cls, iterable, value=None): '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S. If not specified, the value defaults to None. ''' self = cls() for key in iterable: self[key] = value return self def __eq__(self, other): '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive while comparison to a regular mapping is order-insensitive. ''' if isinstance(other, OrderedDict): return dict.__eq__(self, other) and all(_imap(_eq, self, other)) return dict.__eq__(self, other) def __ne__(self, other): 'od.__ne__(y) <==> od!=y' return not self == other # -- the following methods support python 3.x style dictionary views -- def viewkeys(self): "od.viewkeys() -> a set-like object providing a view on od's keys" return KeysView(self) def viewvalues(self): "od.viewvalues() -> an object providing a view on od's values" return ValuesView(self) def viewitems(self): "od.viewitems() -> a set-like object providing a view on od's items" return ItemsView(self) ################################################################################ ### namedtuple ################################################################################ _class_template = '''\ class {typename}(tuple): '{typename}({arg_list})' __slots__ = () _fields = {field_names!r} def __new__(_cls, {arg_list}): 'Create new instance of {typename}({arg_list})' return _tuple.__new__(_cls, ({arg_list})) @classmethod def _make(cls, iterable, new=tuple.__new__, len=len): 'Make a new {typename} object from a sequence or iterable' result = new(cls, iterable) if len(result) != {num_fields:d}: raise TypeError('Expected {num_fields:d} arguments, got %d' % len(result)) return result def __repr__(self): 'Return a nicely formatted representation string' return '{typename}({repr_fmt})' % self def _asdict(self): 'Return a new OrderedDict which maps field names to their values' return OrderedDict(zip(self._fields, self)) def _replace(_self, **kwds): 'Return a new {typename} object replacing specified fields with new values' result = _self._make(map(kwds.pop, {field_names!r}, _self)) if kwds: raise ValueError('Got unexpected field names: %r' % kwds.keys()) return result def __getnewargs__(self): 'Return self as a plain tuple. Used by copy and pickle.' return tuple(self) __dict__ = _property(_asdict) def __getstate__(self): 'Exclude the OrderedDict from pickling' pass {field_defs} ''' _repr_template = '{name}=%r' _field_template = '''\ {name} = _property(_itemgetter({index:d}), doc='Alias for field number {index:d}') ''' def namedtuple(typename, field_names, verbose=False, rename=False): """Returns a new subclass of tuple with named fields. >>> Point = namedtuple('Point', ['x', 'y']) >>> Point.__doc__ # docstring for the new class 'Point(x, y)' >>> p = Point(11, y=22) # instantiate with positional args or keywords >>> p[0] + p[1] # indexable like a plain tuple 33 >>> x, y = p # unpack like a regular tuple >>> x, y (11, 22) >>> p.x + p.y # fields also accessible by name 33 >>> d = p._asdict() # convert to a dictionary >>> d['x'] 11 >>> Point(**d) # convert from a dictionary Point(x=11, y=22) >>> p._replace(x=100) # _replace() is like str.replace() but targets named fields Point(x=100, y=22) """ # Validate the field names. At the user's option, either generate an error # message or automatically replace the field name with a valid name. if isinstance(field_names, basestring): field_names = field_names.replace(',', ' ').split() field_names = map(str, field_names) typename = str(typename) if rename: seen = set() for index, name in enumerate(field_names): if (not all(c.isalnum() or c=='_' for c in name) or _iskeyword(name) or not name or name[0].isdigit() or name.startswith('_') or name in seen): field_names[index] = '_%d' % index seen.add(name) for name in [typename] + field_names: if type(name) != str: raise TypeError('Type names and field names must be strings') if not all(c.isalnum() or c=='_' for c in name): raise ValueError('Type names and field names can only contain ' 'alphanumeric characters and underscores: %r' % name) if _iskeyword(name): raise ValueError('Type names and field names cannot be a ' 'keyword: %r' % name) if name[0].isdigit(): raise ValueError('Type names and field names cannot start with ' 'a number: %r' % name) seen = set() for name in field_names: if name.startswith('_') and not rename: raise ValueError('Field names cannot start with an underscore: ' '%r' % name) if name in seen: raise ValueError('Encountered duplicate field name: %r' % name) seen.add(name) # Fill-in the class template class_definition = _class_template.format( typename = typename, field_names = tuple(field_names), num_fields = len(field_names), arg_list = repr(tuple(field_names)).replace("'", "")[1:-1], repr_fmt = ', '.join(_repr_template.format(name=name) for name in field_names), field_defs = '\n'.join(_field_template.format(index=index, name=name) for index, name in enumerate(field_names)) ) if verbose: print class_definition # Execute the template string in a temporary namespace and support # tracing utilities by setting a value for frame.f_globals['__name__'] namespace = dict(_itemgetter=_itemgetter, __name__='namedtuple_%s' % typename, OrderedDict=OrderedDict, _property=property, _tuple=tuple) try: exec class_definition in namespace except SyntaxError as e: raise SyntaxError(e.message + ':\n' + class_definition) result = namespace[typename] # For pickling to work, the __module__ variable needs to be set to the frame # where the named tuple is created. Bypass this step in environments where # sys._getframe is not defined (Jython for example) or sys._getframe is not # defined for arguments greater than 0 (IronPython). try: result.__module__ = _sys._getframe(1).f_globals.get('__name__', '__main__') except (AttributeError, ValueError): pass return result ######################################################################## ### Counter ######################################################################## class Counter(dict): '''Dict subclass for counting hashable items. Sometimes called a bag or multiset. Elements are stored as dictionary keys and their counts are stored as dictionary values. >>> c = Counter('abcdeabcdabcaba') # count elements from a string >>> c.most_common(3) # three most common elements [('a', 5), ('b', 4), ('c', 3)] >>> sorted(c) # list all unique elements ['a', 'b', 'c', 'd', 'e'] >>> ''.join(sorted(c.elements())) # list elements with repetitions 'aaaaabbbbcccdde' >>> sum(c.values()) # total of all counts 15 >>> c['a'] # count of letter 'a' 5 >>> for elem in 'shazam': # update counts from an iterable ... c[elem] += 1 # by adding 1 to each element's count >>> c['a'] # now there are seven 'a' 7 >>> del c['b'] # remove all 'b' >>> c['b'] # now there are zero 'b' 0 >>> d = Counter('simsalabim') # make another counter >>> c.update(d) # add in the second counter >>> c['a'] # now there are nine 'a' 9 >>> c.clear() # empty the counter >>> c Counter() Note: If a count is set to zero or reduced to zero, it will remain in the counter until the entry is deleted or the counter is cleared: >>> c = Counter('aaabbc') >>> c['b'] -= 2 # reduce the count of 'b' by two >>> c.most_common() # 'b' is still in, but its count is zero [('a', 3), ('c', 1), ('b', 0)] ''' # References: # http://en.wikipedia.org/wiki/Multiset # http://www.gnu.org/software/smalltalk/manual-base/html_node/Bag.html # http://www.demo2s.com/Tutorial/Cpp/0380__set-multiset/Catalog0380__set-multiset.htm # http://code.activestate.com/recipes/259174/ # Knuth, TAOCP Vol. II section 4.6.3 def __init__(*args, **kwds): '''Create a new, empty Counter object. And if given, count elements from an input iterable. Or, initialize the count from another mapping of elements to their counts. >>> c = Counter() # a new, empty counter >>> c = Counter('gallahad') # a new counter from an iterable >>> c = Counter({'a': 4, 'b': 2}) # a new counter from a mapping >>> c = Counter(a=4, b=2) # a new counter from keyword args ''' if not args: raise TypeError("descriptor '__init__' of 'Counter' object " "needs an argument") self = args[0] args = args[1:] if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) super(Counter, self).__init__() self.update(*args, **kwds) def __missing__(self, key): 'The count of elements not in the Counter is zero.' # Needed so that self[missing_item] does not raise KeyError return 0 def most_common(self, n=None): '''List the n most common elements and their counts from the most common to the least. If n is None, then list all element counts. >>> Counter('abcdeabcdabcaba').most_common(3) [('a', 5), ('b', 4), ('c', 3)] ''' # Emulate Bag.sortedByCount from Smalltalk if n is None: return sorted(self.iteritems(), key=_itemgetter(1), reverse=True) return _heapq.nlargest(n, self.iteritems(), key=_itemgetter(1)) def elements(self): '''Iterator over elements repeating each as many times as its count. >>> c = Counter('ABCABC') >>> sorted(c.elements()) ['A', 'A', 'B', 'B', 'C', 'C'] # Knuth's example for prime factors of 1836: 2**2 * 3**3 * 17**1 >>> prime_factors = Counter({2: 2, 3: 3, 17: 1}) >>> product = 1 >>> for factor in prime_factors.elements(): # loop over factors ... product *= factor # and multiply them >>> product 1836 Note, if an element's count has been set to zero or is a negative number, elements() will ignore it. ''' # Emulate Bag.do from Smalltalk and Multiset.begin from C++. return _chain.from_iterable(_starmap(_repeat, self.iteritems())) # Override dict methods where necessary @classmethod def fromkeys(cls, iterable, v=None): # There is no equivalent method for counters because setting v=1 # means that no element can have a count greater than one. raise NotImplementedError( 'Counter.fromkeys() is undefined. Use Counter(iterable) instead.') def update(*args, **kwds): '''Like dict.update() but add counts instead of replacing them. Source can be an iterable, a dictionary, or another Counter instance. >>> c = Counter('which') >>> c.update('witch') # add elements from another iterable >>> d = Counter('watch') >>> c.update(d) # add elements from another counter >>> c['h'] # four 'h' in which, witch, and watch 4 ''' # The regular dict.update() operation makes no sense here because the # replace behavior results in the some of original untouched counts # being mixed-in with all of the other counts for a mismash that # doesn't have a straight-forward interpretation in most counting # contexts. Instead, we implement straight-addition. Both the inputs # and outputs are allowed to contain zero and negative counts. if not args: raise TypeError("descriptor 'update' of 'Counter' object " "needs an argument") self = args[0] args = args[1:] if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) iterable = args[0] if args else None if iterable is not None: if isinstance(iterable, Mapping): if self: self_get = self.get for elem, count in iterable.iteritems(): self[elem] = self_get(elem, 0) + count else: super(Counter, self).update(iterable) # fast path when counter is empty else: self_get = self.get for elem in iterable: self[elem] = self_get(elem, 0) + 1 if kwds: self.update(kwds) def subtract(*args, **kwds): '''Like dict.update() but subtracts counts instead of replacing them. Counts can be reduced below zero. Both the inputs and outputs are allowed to contain zero and negative counts. Source can be an iterable, a dictionary, or another Counter instance. >>> c = Counter('which') >>> c.subtract('witch') # subtract elements from another iterable >>> c.subtract(Counter('watch')) # subtract elements from another counter >>> c['h'] # 2 in which, minus 1 in witch, minus 1 in watch 0 >>> c['w'] # 1 in which, minus 1 in witch, minus 1 in watch -1 ''' if not args: raise TypeError("descriptor 'subtract' of 'Counter' object " "needs an argument") self = args[0] args = args[1:] if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) iterable = args[0] if args else None if iterable is not None: self_get = self.get if isinstance(iterable, Mapping): for elem, count in iterable.items(): self[elem] = self_get(elem, 0) - count else: for elem in iterable: self[elem] = self_get(elem, 0) - 1 if kwds: self.subtract(kwds) def copy(self): 'Return a shallow copy.' return self.__class__(self) def __reduce__(self): return self.__class__, (dict(self),) def __delitem__(self, elem): 'Like dict.__delitem__() but does not raise KeyError for missing values.' if elem in self: super(Counter, self).__delitem__(elem) def __repr__(self): if not self: return '%s()' % self.__class__.__name__ items = ', '.join(map('%r: %r'.__mod__, self.most_common())) return '%s({%s})' % (self.__class__.__name__, items) # Multiset-style mathematical operations discussed in: # Knuth TAOCP Volume II section 4.6.3 exercise 19 # and at http://en.wikipedia.org/wiki/Multiset # # Outputs guaranteed to only include positive counts. # # To strip negative and zero counts, add-in an empty counter: # c += Counter() def __add__(self, other): '''Add counts from two counters. >>> Counter('abbb') + Counter('bcc') Counter({'b': 4, 'c': 2, 'a': 1}) ''' if not isinstance(other, Counter): return NotImplemented result = Counter() for elem, count in self.items(): newcount = count + other[elem] if newcount > 0: result[elem] = newcount for elem, count in other.items(): if elem not in self and count > 0: result[elem] = count return result def __sub__(self, other): ''' Subtract count, but keep only results with positive counts. >>> Counter('abbbc') - Counter('bccd') Counter({'b': 2, 'a': 1}) ''' if not isinstance(other, Counter): return NotImplemented result = Counter() for elem, count in self.items(): newcount = count - other[elem] if newcount > 0: result[elem] = newcount for elem, count in other.items(): if elem not in self and count < 0: result[elem] = 0 - count return result def __or__(self, other): '''Union is the maximum of value in either of the input counters. >>> Counter('abbb') | Counter('bcc') Counter({'b': 3, 'c': 2, 'a': 1}) ''' if not isinstance(other, Counter): return NotImplemented result = Counter() for elem, count in self.items(): other_count = other[elem] newcount = other_count if count < other_count else count if newcount > 0: result[elem] = newcount for elem, count in other.items(): if elem not in self and count > 0: result[elem] = count return result def __and__(self, other): ''' Intersection is the minimum of corresponding counts. >>> Counter('abbb') & Counter('bcc') Counter({'b': 1}) ''' if not isinstance(other, Counter): return NotImplemented result = Counter() for elem, count in self.items(): other_count = other[elem] newcount = count if count < other_count else other_count if newcount > 0: result[elem] = newcount return result if __name__ == '__main__': # verify that instances can be pickled from cPickle import loads, dumps Point = namedtuple('Point', 'x, y', True) p = Point(x=10, y=20) assert p == loads(dumps(p)) # test and demonstrate ability to override methods class Point(namedtuple('Point', 'x y')): __slots__ = () @property def hypot(self): return (self.x ** 2 + self.y ** 2) ** 0.5 def __str__(self): return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot) for p in Point(3, 4), Point(14, 5/7.): print p class Point(namedtuple('Point', 'x y')): 'Point class with optimized _make() and _replace() without error-checking' __slots__ = () _make = classmethod(tuple.__new__) def _replace(self, _map=map, **kwds): return self._make(_map(kwds.get, ('x', 'y'), self)) print Point(11, 22)._replace(x=100) Point3D = namedtuple('Point3D', Point._fields + ('z',)) print Point3D.__doc__ import doctest TestResults = namedtuple('TestResults', 'failed attempted') print TestResults(*doctest.testmod())
Close