-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
276 lines (246 loc) · 13.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Primary Icon Tags -->
<link rel="icon" href="https://vfxpy.com/favicon.ico">
<link rel="icon" href="https://vfxpy.com/logo_32.png">
<!-- Primary Meta Tags -->
<title>VFX Python3 Readiness</title>
<meta name="title" content="VFX Python3 Readiness">
<meta name="description"
content="Python 3 support graph for most popular Python libraries and DCC applications used in VFX production">
<meta name="robots" content="index, follow">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://vfxpy.com/">
<meta property="og:title" content="VFX Python3 Readiness">
<meta property="og:description"
content="Python 3 support graph for most popular Python libraries and DCC applications used in VFX production">
<meta property="og:image" content="">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://vfxpy.com/">
<meta property="twitter:title" content="VFX Python3 Readiness">
<meta property="twitter:description"
content="Python 3 support graph for most popular Python libraries and DCC applications used in VFX production">
<meta property="twitter:image" content="">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<!-- jQuery Script -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<!-- Popper.js, then Bootstrap JS -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"
integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd"
crossorigin="anonymous"></script>
<!-- Optional JavaScript -->
<script type="text/javascript">
$(function(){
function json_success(response){
// Update copy
console.log(response);
$("span.date").html(response['last_update']);
var data = response['data'];
// Filter by type
var application = data.filter(function (item) {
return item.type == "application";
});
var library = data.filter(function (item) {
return item.type == "library";
});
var other = data.filter(function (item) {
return item.type == "other";
});
// Populate table
var populate = function(data){
var tbl_body = "";
$.each(data, function(i, v) {
var website_disable = (v['website'] == '' || v['website'] == undefined) ? ' disabled' : '';
var source_disable = (v['source'] == '' || v['source'] == undefined) ? ' disabled' : '';
var line_body = '<div class="panel-body" style="word-break: break-word;">' +
'<h4>' + v['vendor'] + ' ' + v['name'] + '</h2>' +
v['body'].linkify() + '</div>'
var line_footer = '<div class="panel-footer" style="padding: 4px;"><div class="row">' +
'<div class="col-xs-10">' +
'<h6 class="text-muted" style="font-family:monospace;">Package version: ' + v['package_version'] + '</h6>' +
'<h6 class="text-muted" style="font-family:monospace;">Supports python: ' + v['python_version'] + '</h6>' +
'</div>' +
'<div class="col-xs-2">' +
'<div class="btn-group btn-group-vertical btn-group-sm pull-right" role="group">' +
'<a href="' + v['website'] + '" role="button" class="btn btn-link' + website_disable + '" title="Homepage"><span class="glyphicon glyphicon-home"></span></a>' +
'<a href="' + v['source'] + '" role="button" class="btn btn-link' + source_disable + '" title="Source code"><span class="glyphicon glyphicon-folder-open"></span></a>' +
'</div>' +
'</div>' +
'</div></div>'
var line = '<a class="btn btn-' + v['css_class'] +
'" data-toggle="collapse" href="#collapse' + v['id'] +
'" role="button" aria-expanded="false" aria-controls="collapse' + v['id'] +
'" title="' + v['title'] + '">' +
v['name'] + ' ' + v['icon'] + ' ' + '<span class="label label-pill label-' + v['label_css_class'] + '" style="margin-left: 4px;">' + v['label'] + '</span>' + '</a>' +
'<div class="collapse" id="collapse' + v['id'] + '"><div class="panel panel-' + v['css_class'] + '" ' +
'style="border-top-left-radius: 0px; border-top-left-radius: 0px;">' + line_body + line_footer + '</div></div>';
tbl_body += line;
})
return tbl_body;
}
$(".list-application").html(populate(application));
$(".list-library").html(populate(library));
$(".list-other").html(populate(other));
handle_css();
};
if (!String.linkify) {
String.prototype.linkify = function () {
// http://, https://, ftp://
var urlPattern = /\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim;
// www. sans http:// or https://
var pseudoUrlPattern = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
// Email addresses
var emailAddressPattern = /[\w.]+@[a-zA-Z_-]+?(?:\.[a-zA-Z]{2,6})+/gim;
return this
.replace(urlPattern, '<a href="$&">$&</a>')
.replace(pseudoUrlPattern, '$1<a href="http://$2">$2</a>')
.replace(emailAddressPattern, '<a href="mailto:$&">$&</a>');
};
}
function handle_css(){
var ids = [".list-application", ".list-library", ".list-other"]
$.each(ids, function(idx, id) {
var $items = $(id),
$visible = $items.find("a.btn:visible"),
$first = $visible.first(),
$last = $visible.last();
$items.find(".btn-last-child").removeClass("btn-last-child");
$items.find(".btn-first-child").removeClass("btn-first-child");
$first.addClass("btn-first-child");
$last.addClass("btn-last-child");
});
};
function show_hide_py3(){
var $this = $(this),
$items = $(".btn-success,.panel-success"),
currentState = $this.data("state") || "Show",
nextState = currentState == "Show" ? "Hide" : "Show",
buttonText = currentState + " Python3 Ready";
if (currentState === "Show")
$items.hide();
else
$items.show();
$this.data("state", nextState);
$this.text(buttonText);
handle_css();
};
$(document).ready(function() {
$.getJSON('results.json', json_success);
$("#show-hide-py3").click(show_hide_py3);
$('[data-toggle="tooltip"]').tooltip({
container: 'body'
})
});
});
</script>
<style>
@media (min-width: 1200px) {.container{max-width: 980px;}}
body{margin-top: 0px;}
a.btn, h1{text-align: center;}
a.btn-last-child, canvas, body{margin-bottom: 0px;}
a.btn {border-bottom-width: 0; border-radius: 0; width: 100%;}
a.btn-first-child{border-top-left-radius: 5px; border-top-right-radius: 5px;}
a.btn-last-child{border-bottom-width: 1px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;}
pre {text-align: left;}
footer{text-align: center; margin-bottom: 25px; margin-top: 15px;}
.center-block {max-height: 340px}
.panel {margin-bottom: 4px;}
</style>
</head>
<body>
<div class="container">
<div class="row" style="margin-bottom: 30px;">
<div class="col-sm-12 col-md-12">
<h1>Are we Python3 ready?</h1>
<p class="text-center text-default">Python3 support graph for the most popular VFX packages!</p>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<object data="wheel.svg" type="image/svg+xml" class="center-block"></object>
<h2>What is this about?</h2>
<p>This site shows Python3 support for the popular packages in VFX production:</p>
<ol>
<li><span class="text-success">Green</span> packages support Python3;</li>
<li><span class="text-muted">White</span> packages do not support Python3 yet.</li>
</ol>
<p>A package is any substantial part of the VFX pipeline.</p>
<h2>Information is out of date, how can I change it?</h2>
<div class="alert alert-success" role="alert">
This site pulls data from the
<a class="alert-link" href="https://docs.google.com/spreadsheets/d/10XG92byepTD-LEeXx4mBjhGaNPtJsd_QaXlZ866wj7k">
community maintained spreadsheet</a> where information is aggregated. Data is vetted before the site is updated
but you can contribute by making sure the spreadsheet is up to date!
</div>
<p>Please see note in the <a href="https://github.com/koaleksa/vfxpy">README</a> for details on how updating works.</p>
<h2>My package is white. What can I do?</h2>
<p>There can be many reasons why a package still does not support Python3.</p>
<ul>
<li>
<p>
If you are package maintainer or a developer, it's time to start porting (if you haven't already).
<a href="https://www.visualeffectssociety.com/ves-committees/?jump-9">VES Technology Committee</a>
and respectable industry leaders maintaining the <a href="https://vfxplatform.com/">vfxplatform</a>
have been <strong>strongly advising to make that commitment for the CY2020 releases.</strong>
If you are not able to give the time needed, please seek help from the community by writing
about it on blogs, forums, twitter, mailing lists, etc.
</p>
</li>
<li>
<p>
If you are a user of the package, send a friendly note to the package maintainer or software vendor representative.
</p>
</li>
</ul>
<h2>Thanks</h2>
<p>
This is derivative work from <a href="http://chhantyal.net/py3readiness/">py3readiness</a>, a site that tracks
general
compatibility with Python3, which in turn is a derivative of <a href="pythonwheels.com">pythonwheels.com</a>, a
site that tracks
which Python distributions ship the wheel distribution.
</p>
</div>
<div class="col-sm-6">
<a id="show-hide-py3" href="javascript:void(0)" class="btn btn-default btn-first-child btn-last-child">Hide Python3 Ready</a>
<h6 class="text-right"><i>*Click on any package to reveal more info</i></h6>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title text-center"><span class="glyphicon glyphicon-cog"></span> Applications</h3>
</div>
</div>
<div class="list-application">vfxpy.com requires javascript to be enabled to display the list of packages.</div>
<br>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title text-center"><span class="glyphicon glyphicon-duplicate"></span> Libraries</h3>
</div>
</div>
<div class="list-library"></div>
<br>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title text-center"><span class="glyphicon glyphicon-th-large"></span> Other</h3>
</div>
</div>
<div class="list-other"></div>
</div>
</div>
<footer>
<p>
Maintained by <a href="https://aleksandarkocic.com/">Aleksandar Kocic</a>;
updates on <a href="https://twitter.com/vfxpy">Twitter</a>;
source code on <a href="https://github.com/koaleksa/vfxpy">GitHub</a>.
</p>
<p>Last updated on <span class="date"></span></p>
</footer>
</div>
</body>
</html>