# API e Versionamento de ABI

O CPython expõe seu número de versão nas seguintes macros. Note que estes correspondem com o código da versão que está construída, não necessariamente a versão usada no run time.

Veja Estabilidade da API C para uma discussão da estabilidade da API e ABI através das versões.

`PY_MAJOR_VERSION`

  O `3` em `3.4.1a2`.

`PY_MINOR_VERSION`

  O `4` em `3.4.1a2`.

`PY_MICRO_VERSION`

  O `1` em `3.4.1a2`.

`PY_RELEASE_LEVEL`

  O `a` em `3.4.1a2`. Isto pode ser `0xA` para alfa, `0xB` para beta, `0xC` para o candidato a lançamento ou `0xF` para final.

`PY_RELEASE_SERIAL`

  O `2` em `3.4.1a2`. Zero para os lançamentos finais.

`PY_VERSION_HEX`

  O número da versão do Python codificado em um único inteiro.

  As informações da versão subjacente podem ser achadas tratando-as como um número de 32 bits da seguinte maneira:

  Bytes | Bits (big endian order) | Significado | Valor para `3.4.1a2`
  --- | --- | --- | ---
  1 | 1-8 | `PY_MAJOR_VERSION` | `0x03`
  2 | 9-16 | `PY_MINOR_VERSION` | `0x04`
  3 | 17-24 | `PY_MICRO_VERSION` | `0x01`
  4 | 25-28 | `PY_RELEASE_LEVEL` | `0xA`
  29-32 | `PY_RELEASE_SERIAL` | `0x2`

  Assim `3.4.1a2` é a versão hex `0x030401a2` e `3.10.0` é a versãos hex `0x030a00f0`.

Todas as macros dadas estão definidas em Include/patchlevel.h.