1
+
2
+ <!DOCTYPE html>
3
+ < html lang ="en " class ="no-js ">
4
+ < head >
5
+
6
+ < meta charset ="utf-8 ">
7
+ < meta name ="viewport " content ="width=device-width,initial-scale=1 ">
8
+ < meta http-equiv ="x-ua-compatible " content ="ie=edge ">
9
+
10
+ < meta name ="description " content ="A curated list of awesome Python frameworks, libraries and software ">
11
+
12
+
13
+
14
+ < meta name ="author " content ="Vinta Chen ">
15
+
16
+
17
+ < meta name ="lang:clipboard.copy " content ="Copy to clipboard ">
18
+
19
+ < meta name ="lang:clipboard.copied " content ="Copied to clipboard ">
20
+
21
+ < meta name ="lang:search.languages " content ="">
22
+
23
+ < meta name ="lang:search.result.none " content ="No matching documents ">
24
+
25
+ < meta name ="lang:search.result.one " content ="1 matching document ">
26
+
27
+ < meta name ="lang:search.result.other " content ="# matching documents ">
28
+
29
+ < meta name ="lang:search.tokenizer " content ="[\s\-]+ ">
30
+
31
+
32
+ < link rel ="shortcut icon " href ="/assets/images/favicon.png ">
33
+
34
+ < meta name ="generator " content ="mkdocs-0.16.3, mkdocs-material-1.12.1 ">
35
+
36
+
37
+
38
+ < title > Awesome Python</ title >
39
+
40
+
41
+
42
+ < script src ="/assets/javascripts/modernizr-e826f8942a.js "> </ script >
43
+
44
+
45
+ < link rel ="stylesheet " href ="/assets/stylesheets/application-04ea671600.css ">
46
+
47
+ < link rel ="stylesheet " href ="/assets/stylesheets/application-23f75ab9c7.palette.css ">
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ < link rel ="stylesheet " href ="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono ">
56
+ < style > body , input {font-family : "Roboto" , "Helvetica Neue" , Helvetica, Arial, sans-serif}code , kbd , pre {font-family : "Roboto Mono" , "Courier New" , Courier, monospace}</ style >
57
+
58
+ < link rel ="stylesheet " href ="https://fonts.googleapis.com/icon?family=Material+Icons ">
59
+
60
+
61
+ < link rel ="stylesheet " href ="/extra.css ">
62
+
63
+
64
+ </ head >
65
+
66
+
67
+
68
+
69
+ < body data-md-color-primary ="red " data-md-color-accent ="pink ">
70
+
71
+ < svg class ="md-svg ">
72
+ < defs >
73
+
74
+
75
+ < svg xmlns ="http://www.w3.org/2000/svg " width ="416 " height ="448 " viewBox ="0 0 416 448 " id ="github "> < path fill ="currentColor " d ="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z "/> </ svg >
76
+
77
+ </ defs >
78
+ </ svg >
79
+ < input class ="md-toggle " data-md-toggle ="drawer " type ="checkbox " id ="drawer ">
80
+ < input class ="md-toggle " data-md-toggle ="search " type ="checkbox " id ="search ">
81
+ < label class ="md-overlay " data-md-component ="overlay " for ="drawer "> </ label >
82
+
83
+ < header class ="md-header " data-md-component ="header ">
84
+ < nav class ="md-header-nav md-grid ">
85
+ < div class ="md-flex ">
86
+ < div class ="md-flex__cell md-flex__cell--shrink ">
87
+ < a href ="https://awesome-python.com " title ="Awesome Python " class ="md-header-nav__button md-logo ">
88
+
89
+ < i class ="md-icon md-icon--home "> </ i >
90
+
91
+ </ a >
92
+ </ div >
93
+ < div class ="md-flex__cell md-flex__cell--shrink ">
94
+ < label class ="md-icon md-icon--menu md-header-nav__button " for ="drawer "> </ label >
95
+ </ div >
96
+ < div class ="md-flex__cell md-flex__cell--stretch ">
97
+ < span class ="md-flex__ellipsis md-header-nav__title ">
98
+
99
+
100
+ Awesome Python
101
+
102
+ </ span >
103
+ </ div >
104
+ < div class ="md-flex__cell md-flex__cell--shrink ">
105
+
106
+ < label class ="md-icon md-icon--search md-header-nav__button " for ="search "> </ label >
107
+
108
+ < div class ="md-search " data-md-component ="search " role ="dialog ">
109
+ < label class ="md-search__overlay " for ="search "> </ label >
110
+ < div class ="md-search__inner ">
111
+ < form class ="md-search__form " name ="search ">
112
+ < input type ="text " class ="md-search__input " name ="query " required placeholder ="Search " autocapitalize ="off " autocorrect ="off " autocomplete ="off " spellcheck ="false " data-md-component ="query ">
113
+ < label class ="md-icon md-search__icon " for ="search "> </ label >
114
+ < button type ="reset " class ="md-icon md-search__icon " data-md-component ="reset "> </ button >
115
+ </ form >
116
+ < div class ="md-search__output ">
117
+ < div class ="md-search__scrollwrap " data-md-scrollfix >
118
+ < div class ="md-search-result " data-md-component ="result ">
119
+ < div class ="md-search-result__meta ">
120
+ Type to start searching
121
+ </ div >
122
+ < ol class ="md-search-result__list "> </ ol >
123
+ </ div >
124
+ </ div >
125
+ </ div >
126
+ </ div >
127
+ </ div >
128
+
129
+ </ div >
130
+
131
+ < div class ="md-flex__cell md-flex__cell--shrink ">
132
+ < div class ="md-header-nav__source ">
133
+
134
+
135
+
136
+
137
+
138
+
139
+ < a href ="https://github.com/vinta/awesome-python " title ="Go to repository " class ="md-source " data-md-source ="github ">
140
+
141
+ < div class ="md-source__icon ">
142
+ < svg viewBox ="0 0 24 24 " width ="24 " height ="24 ">
143
+ < use xlink:href ="#github " width ="24 " height ="24 "> </ use >
144
+ </ svg >
145
+ </ div >
146
+
147
+ < div class ="md-source__repository ">
148
+ vinta/awesome-python
149
+ </ div >
150
+ </ a >
151
+
152
+ </ div >
153
+ </ div >
154
+
155
+ </ div >
156
+ </ nav >
157
+ </ header >
158
+
159
+ < div class ="md-container ">
160
+
161
+
162
+
163
+ < main class ="md-main ">
164
+ < div class ="md-main__inner md-grid " data-md-component ="container ">
165
+
166
+
167
+ < div class ="md-sidebar md-sidebar--primary " data-md-component ="navigation ">
168
+ < div class ="md-sidebar__scrollwrap ">
169
+ < div class ="md-sidebar__inner ">
170
+ < nav class ="md-nav md-nav--primary " data-md-level ="0 ">
171
+ < label class ="md-nav__title md-nav__title--site " for ="drawer ">
172
+ < span class ="md-nav__button md-logo ">
173
+
174
+ < i class ="md-icon md-icon--home "> </ i >
175
+
176
+ </ span >
177
+ Awesome Python
178
+ </ label >
179
+
180
+ < div class ="md-nav__source ">
181
+
182
+
183
+
184
+
185
+
186
+
187
+ < a href ="https://github.com/vinta/awesome-python " title ="Go to repository " class ="md-source " data-md-source ="github ">
188
+
189
+ < div class ="md-source__icon ">
190
+ < svg viewBox ="0 0 24 24 " width ="24 " height ="24 ">
191
+ < use xlink:href ="#github " width ="24 " height ="24 "> </ use >
192
+ </ svg >
193
+ </ div >
194
+
195
+ < div class ="md-source__repository ">
196
+ vinta/awesome-python
197
+ </ div >
198
+ </ a >
199
+
200
+ </ div >
201
+
202
+ < ul class ="md-nav__list " data-md-scrollfix >
203
+
204
+
205
+
206
+
207
+
208
+
209
+ < li class ="md-nav__item ">
210
+ < a href ="/ " title ="Life is short, you need Python. " class ="md-nav__link ">
211
+ Life is short, you need Python.
212
+ </ a >
213
+ </ li >
214
+
215
+
216
+ </ ul >
217
+ </ nav >
218
+ </ div >
219
+ </ div >
220
+ </ div >
221
+
222
+
223
+
224
+ < div class ="md-content ">
225
+ < article class ="md-content__inner md-typeset ">
226
+
227
+ < h1 > 404 - Not found</ h1 >
228
+
229
+
230
+
231
+
232
+ </ article >
233
+ </ div >
234
+ </ div >
235
+ </ main >
236
+
237
+
238
+ < footer class ="md-footer ">
239
+
240
+ < div class ="md-footer-meta md-typeset ">
241
+ < div class ="md-footer-meta__inner md-grid ">
242
+ < div class ="md-footer-copyright ">
243
+
244
+ powered by
245
+ < a href ="http://www.mkdocs.org " title ="MkDocs "> MkDocs</ a >
246
+ and
247
+ < a href ="http://squidfunk.github.io/mkdocs-material/ " title ="Material for MkDocs ">
248
+ Material for MkDocs</ a >
249
+ </ div >
250
+
251
+
252
+ < div class ="md-footer-social ">
253
+
254
+ < link rel ="stylesheet " href ="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css ">
255
+
256
+ < a href ="https://github.com/vinta " class ="md-footer-social__link fa fa-github "> </ a >
257
+
258
+ < a href ="https://twitter.com/vinta " class ="md-footer-social__link fa fa-twitter "> </ a >
259
+
260
+ < a href ="https://www.linkedin.com/in/vinta " class ="md-footer-social__link fa fa-linkedin "> </ a >
261
+
262
+ </ div >
263
+
264
+
265
+ </ div >
266
+ </ div >
267
+ </ footer >
268
+
269
+ </ div >
270
+
271
+ < script src ="/assets/javascripts/application-946997f430.js "> </ script >
272
+
273
+
274
+ < script > app . initialize ( { version :"0.16.3" , url :{ base :"" } } ) </ script >
275
+
276
+
277
+
278
+
279
+ < script > ! function ( e , t , a , n , o , c , i ) { e . GoogleAnalyticsObject = o , e [ o ] = e [ o ] || function ( ) { ( e [ o ] . q = e [ o ] . q || [ ] ) . push ( arguments ) } , e [ o ] . l = 1 * new Date , c = t . createElement ( a ) , i = t . getElementsByTagName ( a ) [ 0 ] , c . async = 1 , c . src = n , i . parentNode . insertBefore ( c , i ) } ( window , document , "script" , "https://www.google-analytics.com/analytics.js" , "ga" ) , ga ( "create" , "UA-510626-7" , "auto" ) , ga ( "set" , "anonymizeIp" , ! 0 ) , ga ( "send" , "pageview" ) ; var links = document . getElementsByTagName ( "a" ) ; Array . prototype . map . call ( links , function ( e ) { e . host != document . location . host && e . addEventListener ( "click" , function ( ) { var t = e . getAttribute ( "data-md-action" ) || "follow" ; ga ( "send" , "event" , "outbound" , t , e . href ) } ) } ) ; var query = document . forms . search . query ; query . addEventListener ( "blur" , function ( ) { if ( this . value ) { var e = document . location . pathname ; ga ( "send" , "pageview" , e + "?q=" + this . value ) } } ) </ script >
280
+
281
+
282
+ </ body >
283
+ </ html >
0 commit comments