diff --git a/index.html b/index.html
index c262b78f41975..45aae7a989369 100644
--- a/index.html
+++ b/index.html
@@ -511,6 +511,22 @@
Miscellaneous
|
https://img.shields.io/pypi/l/Django.svg |
+ PyPI: |
+ |
+ https://img.shields.io/pypi/wheel/Django.svg |
+
+ PyPI: |
+ |
+ https://img.shields.io/pypi/py_versions/Django.svg |
+
+ PyPI: |
+ |
+ https://img.shields.io/pypi/implementation/Django.svg |
+
+ PyPI: |
+ |
+ https://img.shields.io/pypi/status/Django.svg |
+
Hex.pm: |
|
https://img.shields.io/hexpm/l/plug.svg |
diff --git a/server.js b/server.js
index 54a76091e5231..729a5bded785a 100644
--- a/server.js
+++ b/server.js
@@ -1481,6 +1481,73 @@ cache(function(data, match, sendBadge, request) {
badgeData.colorscheme = 'blue';
}
sendBadge(format, badgeData);
+ } else if (info == 'wheel') {
+ var releases = data.releases[data.info.version];
+ var hasWheel = false;
+ for (var i in releases) {
+ if (releases[i].packagetype == 'wheel' ||
+ releases[i].packagetype == 'bdist_wheel') {
+ hasWheel = true;
+ break;
+ }
+ }
+ badgeData.text[0] = 'wheel';
+ badgeData.text[1] = hasWheel ? 'yes' : 'no';
+ badgeData.colorscheme = hasWheel ? 'brightgreen' : 'red';
+ sendBadge(format, badgeData);
+ } else if (info == 'py_versions') {
+ var versions = [];
+ var pattern = /^Programming Language \:\: Python \:\: (\d\.\d)$/;
+ for (var i in data.info.classifiers) {
+ var matched = pattern.exec(data.info.classifiers[i]);
+ if (matched && matched[1]) {
+ versions.push(matched[1]);
+ }
+ }
+ if (!versions.length) {
+ versions.push('not found');
+ }
+ badgeData.text[0] = 'python';
+ badgeData.text[1] = versions.sort().join(', ');
+ badgeData.colorscheme = 'blue';
+ sendBadge(format, badgeData);
+ } else if (info == 'implementation') {
+ var implementations = [];
+ var pattern = /^Programming Language \:\: Python \:\: Implementation \:\: (\S+)$/;
+ for (var i in data.info.classifiers) {
+ var matched = pattern.exec(data.info.classifiers[i]);
+ if (matched && matched[1]) {
+ implementations.push(matched[1].toLowerCase());
+ }
+ }
+ if (!implementations.length) {
+ implementations.push('cpython'); // assume CPython
+ }
+ badgeData.text[0] = 'implementation';
+ badgeData.text[1] = implementations.sort().join(', ');
+ badgeData.colorscheme = 'blue';
+ sendBadge(format, badgeData);
+ } else if (info == 'status') {
+ var pattern = /^Development Status \:\: ([1-7]) - (\S+)$/;
+ var statusColors = {
+ '1': 'red', '2': 'red', '3': 'red', '4': 'yellow',
+ '5': 'brightgreen', '6': 'brightgreen', '7': 'red'};
+ var statusCode = '1', statusText = 'unknown';
+ for (var i in data.info.classifiers) {
+ var matched = pattern.exec(data.info.classifiers[i]);
+ if (matched && matched[1] && matched[2]) {
+ statusCode = matched[1];
+ statusText = matched[2].toLowerCase().replace('-', '--');
+ if (statusText == 'production/stable') {
+ statusText = 'stable';
+ }
+ break;
+ }
+ }
+ badgeData.text[0] = 'status';
+ badgeData.text[1] = statusText;
+ badgeData.colorscheme = statusColors[statusCode];
+ sendBadge(format, badgeData);
}
} catch(e) {
badgeData.text[1] = 'invalid';
---|