{"id":13492884,"url":"https://github.com/hugovk/norwegianblue","last_synced_at":"2025-12-29T15:21:11.227Z","repository":{"id":38247227,"uuid":"377148747","full_name":"hugovk/norwegianblue","owner":"hugovk","description":"CLI to show end-of-life dates for a number of products.","archived":false,"fork":false,"pushed_at":"2025-05-01T21:25:49.000Z","size":980,"stargazers_count":124,"open_issues_count":6,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-01T22:23:27.364Z","etag":null,"topics":["cli","end-of-life","eol","hacktoberfest","python","python3"],"latest_commit_sha":null,"homepage":"https://endoflife.date","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hugovk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-06-15T12:05:24.000Z","updated_at":"2025-05-01T21:25:52.000Z","dependencies_parsed_at":"2024-03-01T06:38:35.115Z","dependency_job_id":"cb3d411a-07c1-4077-8660-bded8d56526e","html_url":"https://github.com/hugovk/norwegianblue","commit_stats":{"total_commits":749,"total_committers":14,"mean_commits":53.5,"dds":0.3257676902536716,"last_synced_commit":"bc6df5b5655e96029350263036c0c2416eae80cc"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugovk%2Fnorwegianblue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugovk%2Fnorwegianblue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugovk%2Fnorwegianblue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugovk%2Fnorwegianblue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hugovk","download_url":"https://codeload.github.com/hugovk/norwegianblue/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254582907,"owners_count":22095518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","end-of-life","eol","hacktoberfest","python","python3"],"created_at":"2024-07-31T19:01:10.177Z","updated_at":"2025-12-29T15:21:11.214Z","avatar_url":"https://github.com/hugovk.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# norwegianblue\n\n[![PyPI version](https://img.shields.io/pypi/v/norwegianblue.svg?logo=pypi\u0026logoColor=FFE873)](https://pypi.org/project/norwegianblue/)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/norwegianblue.svg?logo=python\u0026logoColor=FFE873)](https://pypi.org/project/norwegianblue/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/norwegianblue.svg)](https://pypistats.org/packages/norwegianblue)\n[![GitHub Actions status](https://github.com/hugovk/norwegianblue/actions/workflows/test.yml/badge.svg)](https://github.com/hugovk/norwegianblue/actions)\n[![Codecov](https://codecov.io/gh/hugovk/norwegianblue/branch/main/graph/badge.svg)](https://codecov.io/gh/hugovk/norwegianblue)\n[![Licence](https://img.shields.io/github/license/hugovk/norwegianblue.svg)](LICENSE.txt)\n[![Code style: Black](https://img.shields.io/badge/code%20style-Black-000000.svg)](https://github.com/psf/black)\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/hugovk/norwegianblue/main/img/eol-python.png\" width=\"370\" height=\"225\"\u003e\u003c/p\u003e\n\nPython interface to [endoflife.date](https://endoflife.date/docs/api/) to show\nend-of-life dates for a number of products.\n\n## Installation\n\n### From PyPI\n\n```bash\npython3 -m pip install --upgrade norwegianblue\n```\n\n### With [pipx][pipx]\n\n```bash\npipx install norwegianblue\n```\n\n[pipx]: https://github.com/pypa/pipx\n\n### From [conda-forge][conda-forge]\n\n#### With [Pixi][pixi]\n\n```bash\npixi add norwegianblue\n```\n\n#### With [conda][conda]\n\n```bash\nconda install --channel conda-forge norwegianblue\n```\n\n[conda-forge]: https://github.com/conda-forge/norwegianblue-feedstock\n[pixi]: https://pixi.sh/\n[conda]: https://docs.conda.io/projects/conda/\n\n### With [`pixi global`][pixi-global]\n\n```bash\npixi global install norwegianblue\n```\n\n[pixi-global]: https://pixi.sh/latest/global_tools/introduction/\n\n### From source\n\n```bash\ngit clone https://github.com/hugovk/norwegianblue\ncd norwegianblue\npython3 -m pip install .\n```\n\nTo install tab completion on supported Linux and macOS shells, see\nhttps://kislyuk.github.io/argcomplete/\n\n## Example command-line use\n\nRun `norwegianblue` or `eol`, they do the same thing.\n\nTop-level help:\n\n\u003c!-- [[[cog\nfrom scripts.run_command import run\nrun(\"eol --help\")\n]]] --\u003e\n\n```console\n$ eol --help\nusage: eol [-h] [-c {yes,no,auto}] [--clear-cache] [--show-title {yes,no,auto}] [-v] [-V] [-w]\n           [--pretty | --md | --rst | --json | --csv | --tsv | --html | --yaml]\n           [product ...]\n\nCLI to show end-of-life dates for a number of products, from https://endoflife.date\n\nFor example:\n\n* `eol python` to see Python EOLs\n* `eol ubuntu` to see Ubuntu EOLs\n* `eol centos fedora` to see CentOS and Fedora EOLs\n* `eol all` or `eol` to list all available products\n\nSomething missing? Please contribute! https://endoflife.date/contribute\n\npositional arguments:\n  product               product to check, or 'all' to list all available (default: 'all')\n\noptions:\n  -h, --help            show this help message and exit\n  -c, --color {yes,no,auto}\n                        colour the output (default: auto)\n  --clear-cache         clear cache before running\n  --show-title {yes,no,auto}\n                        show or hide product title, 'auto' to show title only for multiple products (default: auto)\n  -v, --verbose         print extra messages to stderr\n  -V, --version         show program's version number and exit\n  -w, --web             open product page in web browser\n\nformatters:\n  --pretty              output in pretty (default)\n  --md                  output in Markdown\n  --rst                 output in reStructuredText\n  --json                output in JSON\n  --csv                 output in CSV\n  --tsv                 output in TSV\n  --html                output in HTML\n  --yaml                output in YAML\n```\n\n\u003c!-- [[[end]]] --\u003e\n\nList all available products with end-of-life dates:\n\n```console\n$ # eol all\n$ # or:\n```\n\n\u003c!-- [[[cog\nrun(\"eol\", line_limit=5)\n]]] --\u003e\n\n```console\n$ eol\nadonisjs\nakeneo-pim\nalibaba-ack\nalibaba-dragonwell\nalmalinux\n...\n```\n\n\u003c!-- [[[end]]] --\u003e\n\nShow end-of-life dates:\n\n\u003c!-- [[[cog\nrun(\"norwegianblue python\")\n]]] --\u003e\n\n```console\n$ norwegianblue python\n┌───────┬────────────┬─────────┬────────────────┬────────────┬────────────┐\n│ cycle │  release   │ latest  │ latest release │  support   │    eol     │\n├───────┼────────────┼─────────┼────────────────┼────────────┼────────────┤\n│ 3.14  │ 2025-10-07 │ 3.14.0  │   2025-10-07   │ 2027-10-01 │ 2030-10-31 │\n│ 3.13  │ 2024-10-07 │ 3.13.9  │   2025-10-14   │ 2026-10-01 │ 2029-10-31 │\n│ 3.12  │ 2023-10-02 │ 3.12.12 │   2025-10-09   │ 2025-04-02 │ 2028-10-31 │\n│ 3.11  │ 2022-10-24 │ 3.11.14 │   2025-10-09   │ 2024-04-01 │ 2027-10-31 │\n│ 3.10  │ 2021-10-04 │ 3.10.19 │   2025-10-09   │ 2023-04-05 │ 2026-10-31 │\n│ 3.9   │ 2020-10-05 │ 3.9.24  │   2025-10-09   │ 2022-05-17 │ 2025-10-31 │\n│ 3.8   │ 2019-10-14 │ 3.8.20  │   2024-09-06   │ 2021-05-03 │ 2024-10-07 │\n│ 3.7   │ 2018-06-27 │ 3.7.17  │   2023-06-05   │ 2020-06-27 │ 2023-06-27 │\n│ 3.6   │ 2016-12-23 │ 3.6.15  │   2021-09-03   │ 2018-12-24 │ 2021-12-23 │\n│ 3.5   │ 2015-09-13 │ 3.5.10  │   2020-09-05   │   False    │ 2020-09-30 │\n│ 3.4   │ 2014-03-16 │ 3.4.10  │   2019-03-18   │   False    │ 2019-03-18 │\n│ 3.3   │ 2012-09-29 │ 3.3.7   │   2017-09-19   │   False    │ 2017-09-29 │\n│ 3.2   │ 2011-02-20 │ 3.2.6   │   2014-10-12   │   False    │ 2016-02-20 │\n│ 2.7   │ 2010-07-03 │ 2.7.18  │   2020-04-19   │   False    │ 2020-01-01 │\n│ 3.1   │ 2009-06-27 │ 3.1.5   │   2012-04-06   │   False    │ 2012-04-09 │\n│ 3.0   │ 2008-12-03 │ 3.0.1   │   2009-02-12   │   False    │ 2009-06-27 │\n│ 2.6   │ 2008-10-01 │ 2.6.9   │   2013-10-29   │   False    │ 2013-10-29 │\n└───────┴────────────┴─────────┴────────────────┴────────────┴────────────┘\n```\n\n\u003c!-- [[[end]]] --\u003e\n\nYou can format in Markdown, ready for pasting in GitHub issues and PRs:\n\n\u003c!-- [[[cog\nrun(\"eol python --md\", with_console=False)\n]]] --\u003e\n\n| cycle |  release   | latest  | latest release |  support   |    eol     |\n| :---- | :--------: | :------ | :------------: | :--------: | :--------: |\n| 3.14  | 2025-10-07 | 3.14.0  |   2025-10-07   | 2027-10-01 | 2030-10-31 |\n| 3.13  | 2024-10-07 | 3.13.9  |   2025-10-14   | 2026-10-01 | 2029-10-31 |\n| 3.12  | 2023-10-02 | 3.12.12 |   2025-10-09   | 2025-04-02 | 2028-10-31 |\n| 3.11  | 2022-10-24 | 3.11.14 |   2025-10-09   | 2024-04-01 | 2027-10-31 |\n| 3.10  | 2021-10-04 | 3.10.19 |   2025-10-09   | 2023-04-05 | 2026-10-31 |\n| 3.9   | 2020-10-05 | 3.9.24  |   2025-10-09   | 2022-05-17 | 2025-10-31 |\n| 3.8   | 2019-10-14 | 3.8.20  |   2024-09-06   | 2021-05-03 | 2024-10-07 |\n| 3.7   | 2018-06-27 | 3.7.17  |   2023-06-05   | 2020-06-27 | 2023-06-27 |\n| 3.6   | 2016-12-23 | 3.6.15  |   2021-09-03   | 2018-12-24 | 2021-12-23 |\n| 3.5   | 2015-09-13 | 3.5.10  |   2020-09-05   |   False    | 2020-09-30 |\n| 3.4   | 2014-03-16 | 3.4.10  |   2019-03-18   |   False    | 2019-03-18 |\n| 3.3   | 2012-09-29 | 3.3.7   |   2017-09-19   |   False    | 2017-09-29 |\n| 3.2   | 2011-02-20 | 3.2.6   |   2014-10-12   |   False    | 2016-02-20 |\n| 2.7   | 2010-07-03 | 2.7.18  |   2020-04-19   |   False    | 2020-01-01 |\n| 3.1   | 2009-06-27 | 3.1.5   |   2012-04-06   |   False    | 2012-04-09 |\n| 3.0   | 2008-12-03 | 3.0.1   |   2009-02-12   |   False    | 2009-06-27 |\n| 2.6   | 2008-10-01 | 2.6.9   |   2013-10-29   |   False    | 2013-10-29 |\n\n\u003c!-- [[[end]]] --\u003e\n\nWith options:\n\n\u003c!-- [[[cog\nrun(\"eol nodejs --rst\")\n]]] --\u003e\n\n```console\n$ eol nodejs --rst\n.. table::\n\n    ==============================================================================================  ============  ==========  ================  ============  ============  ==================\n                                                cycle                                                 release       latest     latest release     support         eol        extended support\n    ==============================================================================================  ============  ==========  ================  ============  ============  ==================\n     24 LTS                                                                                          2025-05-06    24.10.0     2025-10-08        2026-10-20    2028-04-30    False\n     23                                                                                              2024-10-16    23.11.1     2025-05-14        2025-04-01    2025-06-01    False\n     22 LTS                                                                                          2024-04-24    22.20.0     2025-09-24        2025-10-21    2027-04-30    False\n     21                                                                                              2023-10-17    21.7.3      2024-04-10        2024-04-01    2024-06-01    False\n     20 LTS                                                                                          2023-04-18    20.19.5     2025-09-03        2024-10-22    2026-04-30    False\n     19                                                                                              2022-10-18    19.9.0      2023-04-10        2023-04-01    2023-06-01    False\n     18 LTS                                                                                          2022-04-19    18.20.8     2025-03-27        2023-10-18    2025-04-30    True\n     17                                                                                              2021-10-19    17.9.1      2022-06-01        2022-04-01    2022-06-01    False\n     16 LTS                                                                                          2021-04-20    16.20.2     2023-08-09        2022-10-18    2023-09-11    True\n     15                                                                                              2020-10-20    15.14.0     2021-04-06        2021-04-01    2021-06-01    False\n     14 LTS                                                                                          2020-04-21    14.21.3     2023-02-16        2021-10-19    2023-04-30    True\n     13                                                                                              2019-10-22    13.14.0     2020-04-29        2020-04-01    2020-06-01    False\n     12 LTS                                                                                          2019-04-23    12.22.12    2022-04-05        2020-10-20    2022-04-30    True\n     11                                                                                              2018-10-23    11.15.0     2019-04-30        2019-04-01    2019-06-30    False\n     10 LTS                                                                                          2018-04-24    10.24.1     2021-04-06        2020-05-19    2021-04-30    False\n     9                                                                                               2017-10-31    9.11.2      2018-06-12        2018-06-30    2018-06-30    False\n     8 LTS                                                                                           2017-05-30    8.17.0      2019-12-17        2019-01-01    2019-12-31    False\n     7                                                                                               2016-10-25    7.10.1      2017-07-11        2017-06-30    2017-06-30    False\n     6 LTS                                                                                           2016-04-26    6.17.1      2019-04-03        2018-04-30    2019-04-30    False\n     5                                                                                               2015-10-30    5.12.0      2016-06-23        2016-06-30    2016-06-30    False\n     4 LTS                                                                                           2015-09-09    4.9.1       2018-03-29        2017-04-01    2018-04-30    False\n     `3 \u003chttps://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_IOJS.md#__LATEST__\u003e`__    2015-08-04    3.3.1       2015-09-15        False         True          False\n     `2 \u003chttps://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_IOJS.md#__LATEST__\u003e`__    2015-05-04    2.5.0       2015-07-28        False         True          False\n     `1 \u003chttps://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_IOJS.md#__LATEST__\u003e`__    2015-01-20    1.8.4       2015-07-09        False         True          False\n    ==============================================================================================  ============  ==========  ================  ============  ============  ==================\n```\n\n\u003c!-- [[[end]]] --\u003e\n\n## Example programmatic use\n\nReturn values are from the JSON responses documented in the API:\nhttps://endoflife.date/docs/api/\n\n```python\nimport norwegianblue\n\n# Call the API\nprint(norwegianblue.norwegianblue())\nprint(norwegianblue.norwegianblue(product=\"ubuntu\"))\nprint(norwegianblue.norwegianblue(format=\"json\"))\n```\n\n## Why \"Norwegian Blue\"?\n\n[The Norwegian Blue has reached end-of-life.](https://youtu.be/vnciwwsvNcc)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugovk%2Fnorwegianblue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhugovk%2Fnorwegianblue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugovk%2Fnorwegianblue/lists"}