Skip to main content

norwegianblue

PyPI version Supported Python versions PyPI downloads GitHub Actions status Codecov Licence Code style: Black

Python interface to endoflife.date to show end-of-life dates for a number of products.

Installation

From PyPI

python3 -m pip install --upgrade norwegianblue

With pipx

pipx install norwegianblue

From conda-forge

With Pixi

pixi add norwegianblue

With conda

conda install --channel conda-forge norwegianblue

With pixi global

pixi global install norwegianblue

From source

git clone https://github.com/hugovk/norwegianblue
cd norwegianblue
python3 -m pip install .

To install tab completion on supported Linux and macOS shells, see https://kislyuk.github.io/argcomplete/

Example command-line use

Run norwegianblue or eol, they do the same thing.

Top-level help:

$ eol --help
usage: eol [-h] [-c {yes,no,auto}] [--clear-cache] [--show-title {yes,no,auto}] [-v] [-V] [-w]
           [--pretty | --md | --rst | --json | --csv | --tsv | --html | --yaml]
           [product ...]

CLI to show end-of-life dates for a number of products, from https://endoflife.date

For example:

* `eol python` to see Python EOLs
* `eol ubuntu` to see Ubuntu EOLs
* `eol centos fedora` to see CentOS and Fedora EOLs
* `eol all` or `eol` to list all available products

Something missing? Please contribute! https://endoflife.date/contribute

positional arguments:
  product               product to check, or 'all' to list all available (default: 'all')

options:
  -h, --help            show this help message and exit
  -c, --color {yes,no,auto}
                        colour the output (default: auto)
  --clear-cache         clear cache before running
  --show-title {yes,no,auto}
                        show or hide product title, 'auto' to show title only for multiple products (default: auto)
  -v, --verbose         print extra messages to stderr
  -V, --version         show program's version number and exit
  -w, --web             open product page in web browser

formatters:
  --pretty              output in pretty (default)
  --md                  output in Markdown
  --rst                 output in reStructuredText
  --json                output in JSON
  --csv                 output in CSV
  --tsv                 output in TSV
  --html                output in HTML
  --yaml                output in YAML

List all available products with end-of-life dates:

$ # eol all
$ # or:
$ eol
adonisjs
akeneo-pim
alibaba-ack
alibaba-dragonwell
almalinux
...

Show end-of-life dates:

$ norwegianblue python
┌───────┬────────────┬─────────┬────────────────┬────────────┬────────────┬──────────┐
│ cycle │  release   │ latest  │ latest release │  support   │    eol     │   pep    │
├───────┼────────────┼─────────┼────────────────┼────────────┼────────────┼──────────┤
│ 3.14  │ 2025-10-07 │ 3.14.6  │   2026-06-10   │ 2027-10-01 │ 2030-10-31 │ PEP-0745 │
│ 3.13  │ 2024-10-07 │ 3.13.14 │   2026-06-10   │ 2026-10-01 │ 2029-10-31 │ PEP-0719 │
│ 3.12  │ 2023-10-02 │ 3.12.13 │   2026-03-03   │ 2025-04-02 │ 2028-10-31 │ PEP-0693 │
│ 3.11  │ 2022-10-24 │ 3.11.15 │   2026-03-03   │ 2024-04-01 │ 2027-10-31 │ PEP-0664 │
│ 3.10  │ 2021-10-04 │ 3.10.20 │   2026-03-03   │ 2023-04-05 │ 2026-10-31 │ PEP-0619 │
│ 3.9   │ 2020-10-05 │ 3.9.25  │   2025-10-31   │ 2022-05-17 │ 2025-10-31 │ PEP-0596 │
│ 3.8   │ 2019-10-14 │ 3.8.20  │   2024-09-06   │ 2021-05-03 │ 2024-10-07 │ PEP-0569 │
│ 3.7   │ 2018-06-27 │ 3.7.17  │   2023-06-05   │ 2020-06-27 │ 2023-06-27 │ PEP-0537 │
│ 3.6   │ 2016-12-23 │ 3.6.15  │   2021-09-03   │ 2018-12-24 │ 2021-12-23 │ PEP-0494 │
│ 3.5   │ 2015-09-13 │ 3.5.10  │   2020-09-05   │   False    │ 2020-09-30 │ PEP-0478 │
│ 3.4   │ 2014-03-16 │ 3.4.10  │   2019-03-18   │   False    │ 2019-03-18 │ PEP-0429 │
│ 3.3   │ 2012-09-29 │ 3.3.7   │   2017-09-19   │   False    │ 2017-09-29 │ PEP-0398 │
│ 3.2   │ 2011-02-20 │ 3.2.6   │   2014-10-12   │   False    │ 2016-02-20 │ PEP-0392 │
│ 2.7   │ 2010-07-03 │ 2.7.18  │   2020-04-19   │   False    │ 2020-01-01 │ PEP-0373 │
│ 3.1   │ 2009-06-27 │ 3.1.5   │   2012-04-06   │   False    │ 2012-04-09 │ PEP-0375 │
│ 3.0   │ 2008-12-03 │ 3.0.1   │   2009-02-12   │   False    │ 2009-06-27 │ PEP-0361 │
│ 2.6   │ 2008-10-01 │ 2.6.9   │   2013-10-29   │   False    │ 2013-10-29 │ PEP-0361 │
└───────┴────────────┴─────────┴────────────────┴────────────┴────────────┴──────────┘

You can format in Markdown, ready for pasting in GitHub issues and PRs:

cycle release latest latest release support eol pep
3.14 2025-10-07 3.14.6 2026-06-10 2027-10-01 2030-10-31 PEP-0745
3.13 2024-10-07 3.13.14 2026-06-10 2026-10-01 2029-10-31 PEP-0719
3.12 2023-10-02 3.12.13 2026-03-03 2025-04-02 2028-10-31 PEP-0693
3.11 2022-10-24 3.11.15 2026-03-03 2024-04-01 2027-10-31 PEP-0664
3.10 2021-10-04 3.10.20 2026-03-03 2023-04-05 2026-10-31 PEP-0619
3.9 2020-10-05 3.9.25 2025-10-31 2022-05-17 2025-10-31 PEP-0596
3.8 2019-10-14 3.8.20 2024-09-06 2021-05-03 2024-10-07 PEP-0569
3.7 2018-06-27 3.7.17 2023-06-05 2020-06-27 2023-06-27 PEP-0537
3.6 2016-12-23 3.6.15 2021-09-03 2018-12-24 2021-12-23 PEP-0494
3.5 2015-09-13 3.5.10 2020-09-05 False 2020-09-30 PEP-0478
3.4 2014-03-16 3.4.10 2019-03-18 False 2019-03-18 PEP-0429
3.3 2012-09-29 3.3.7 2017-09-19 False 2017-09-29 PEP-0398
3.2 2011-02-20 3.2.6 2014-10-12 False 2016-02-20 PEP-0392
2.7 2010-07-03 2.7.18 2020-04-19 False 2020-01-01 PEP-0373
3.1 2009-06-27 3.1.5 2012-04-06 False 2012-04-09 PEP-0375
3.0 2008-12-03 3.0.1 2009-02-12 False 2009-06-27 PEP-0361
2.6 2008-10-01 2.6.9 2013-10-29 False 2013-10-29 PEP-0361

Or in other formats such as reStructuredText:

$ eol python --rst
+-------+------------+---------+----------------+------------+------------+----------+
| cycle |  release   | latest  | latest release |  support   |    eol     |   pep    |
+=======+============+=========+================+============+============+==========+
| 3.14  | 2025-10-07 | 3.14.6  |   2026-06-10   | 2027-10-01 | 2030-10-31 | PEP-0745 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.13  | 2024-10-07 | 3.13.14 |   2026-06-10   | 2026-10-01 | 2029-10-31 | PEP-0719 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.12  | 2023-10-02 | 3.12.13 |   2026-03-03   | 2025-04-02 | 2028-10-31 | PEP-0693 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.11  | 2022-10-24 | 3.11.15 |   2026-03-03   | 2024-04-01 | 2027-10-31 | PEP-0664 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.10  | 2021-10-04 | 3.10.20 |   2026-03-03   | 2023-04-05 | 2026-10-31 | PEP-0619 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.9   | 2020-10-05 | 3.9.25  |   2025-10-31   | 2022-05-17 | 2025-10-31 | PEP-0596 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.8   | 2019-10-14 | 3.8.20  |   2024-09-06   | 2021-05-03 | 2024-10-07 | PEP-0569 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.7   | 2018-06-27 | 3.7.17  |   2023-06-05   | 2020-06-27 | 2023-06-27 | PEP-0537 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.6   | 2016-12-23 | 3.6.15  |   2021-09-03   | 2018-12-24 | 2021-12-23 | PEP-0494 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.5   | 2015-09-13 | 3.5.10  |   2020-09-05   |   False    | 2020-09-30 | PEP-0478 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.4   | 2014-03-16 | 3.4.10  |   2019-03-18   |   False    | 2019-03-18 | PEP-0429 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.3   | 2012-09-29 | 3.3.7   |   2017-09-19   |   False    | 2017-09-29 | PEP-0398 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.2   | 2011-02-20 | 3.2.6   |   2014-10-12   |   False    | 2016-02-20 | PEP-0392 |
+-------+------------+---------+----------------+------------+------------+----------+
| 2.7   | 2010-07-03 | 2.7.18  |   2020-04-19   |   False    | 2020-01-01 | PEP-0373 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.1   | 2009-06-27 | 3.1.5   |   2012-04-06   |   False    | 2012-04-09 | PEP-0375 |
+-------+------------+---------+----------------+------------+------------+----------+
| 3.0   | 2008-12-03 | 3.0.1   |   2009-02-12   |   False    | 2009-06-27 | PEP-0361 |
+-------+------------+---------+----------------+------------+------------+----------+
| 2.6   | 2008-10-01 | 2.6.9   |   2013-10-29   |   False    | 2013-10-29 | PEP-0361 |
+-------+------------+---------+----------------+------------+------------+----------+

Example programmatic use

Return values are from the JSON responses documented in the API: https://endoflife.date/docs/api/

import norwegianblue

# Call the API
print(norwegianblue.norwegianblue())
print(norwegianblue.norwegianblue(product="ubuntu"))
print(norwegianblue.norwegianblue(format="json"))

Why "Norwegian Blue"?

The Norwegian Blue has reached end-of-life.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

norwegianblue-0.25.0.tar.gz (38.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

norwegianblue-0.25.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file norwegianblue-0.25.0.tar.gz.

File metadata

  • Download URL: norwegianblue-0.25.0.tar.gz
  • Upload date:
  • Size: 38.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for norwegianblue-0.25.0.tar.gz
Algorithm Hash digest
SHA256 5c75a15d19da573f23294a91de7c22517cd70d9ae3f9bb2a20c19884b110e87e
MD5 9d810b0691949460645460a9846ddbda
BLAKE2b-256 fda56ade9f250d183fb5304952bf04d2b0947b0505f6ebf3db0d9437c61a536d

See more details on using hashes here.

Provenance

The following attestation bundles were made for norwegianblue-0.25.0.tar.gz:

Publisher: deploy.yml on hugovk/norwegianblue

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file norwegianblue-0.25.0-py3-none-any.whl.

File metadata

  • Download URL: norwegianblue-0.25.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for norwegianblue-0.25.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7eac1a325b115dc3132698e80ee033c5e776a3a7141269104ce4b85f3cb1b4ec
MD5 6124cf813ba1968d7aeea8ecd541da94
BLAKE2b-256 95615ec54c9c59cdff6eac2829aeb289735b59ecf49921c91ad47bd40eadb5e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for norwegianblue-0.25.0-py3-none-any.whl:

Publisher: deploy.yml on hugovk/norwegianblue

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page