Supported OpenStack Releases and Python Versions
================================================

This document lists the officially supported OpenStack releases
and python versions by Tempest.

Compatible OpenStack Releases
-----------------------------

Tempest master supports the below OpenStack Releases:

* Victoria
* Ussuri
* Train

For older OpenStack Release:

For any older OpenStack Release than the listed above, Tempest master might work. But if
Tempest master starts failing then, you can use the respective Tempest tag listed in OpenStack
release page.

For example: OpenStack Stein: Tempest 20.0.0

* https://releases.openstack.org/stein/index.html#stein-tempest

How to use Tempest tag on Extended Maintenance stable branch:

* https://review.opendev.org/#/c/705098/

Supported Python Versions
-------------------------

Tempest master supports the below python versions:

* Python 3.6
* Python 3.7
* Python 3.8
