Closed
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}%")