- Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
Support Matrix for Python / Elastic Stack version
Version | Download Percentage | Currently Supported (7.x) | Supported in Next Major (8.x) |
---|---|---|---|
2.7 | 10.72% | X | X? |
3.4 | 0.07% | X | |
3.5 | 1.22% | X | |
3.6 | 28.95% | X | X |
3.7+ | 59.04% | X | X |
3.x+ | 89.28% | X | X |
The column for "Supported in Next Major" is subject to change until feature freeze of the next major depending on usage.
Data was last updated from downloads for 2021-03-10
Process
Currently we support Python 2.7, and 3.4 onwards as of Elasticsearch v7.x.
Python versions will come out every year however the amount of changes between 3.x to 3.[x + 1] are much smaller than 2 to 3.
Here's the query being used to determine what Python versions should be supported in 8.x by looking at the split of downloads for 7.x:
SELECT SUBSTR(details.implementation.version, 1, 3) AS ver, COUNT(*) as dwn FROM `the-psf.pypi.file_downloads` WHERE DATE(timestamp) = "2021-04-22" AND file.project = 'elasticsearch' AND file.version = '7.12.0' AND # Filter out PyPy versions SUBSTR(details.implementation.version, 1, 1) <= '3' AND ( # Filter out Python 2.6 or earlier SUBSTR(details.implementation.version, 1, 1) != '2' OR SUBSTR(details.implementation.version, 1, 3) = '2.7' ) AND ( # Filter out Python 3.3 or earlier SUBSTR(details.implementation.version, 1, 1) != '3' OR SUBSTR(details.implementation.version, 3, 3) >= '4' ) GROUP BY ver ORDER BY dwn DESC
JSON results from Google BigQuery fed into this little script to quickly recalculate:
x = {tuple([int(p) for p in d["ver"].split(".")]): int(d["dwn"]) for d in x} total = sum(x.values()) x['3.7+'] = sum([v for k, v in x.items() if k >= (3, 7)]) x['3.x+'] = sum([v for k, v in x.items() if isinstance(k, tuple) and k >= (3,)]) for k in list(x.keys()): if isinstance(k, tuple) and k >= (3, 7): x.pop(k) for k, v in x.items(): print(k, f"{v * 100.0 / total:.2f}%")