Skip to content

Tracker for Supported Python versions #1295

Closed
@sethmlarson

Description

@sethmlarson

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions