Skip to main content

cogeol

Align with supported Python versions - automated with endoflife.date

✨ Features 🚀 Quick start 📚 Documentation 🤝 Contribute 👍 Adopters 📜 Legal


Features

cogeol is a library which allows you to:

  • Works with any file format (e.g. updating Python versions in CI/CD tests)
  • No need to track Python EOL dates — cogeol does it for you
  • Align with Scientific Python SPEC0: cogeol will allow you to align your project to the three latest supported Python versions
  • Caching: retrieves data from https://endoflife.date/ and stores it locally to minimize network requests
  • Based on cog: Manage versions of Python by statically generated code (see examples below!)

Quick start

Installation

> pip install cogeol

Usage

[!TIP] Check out the documentation for all available functionalities and public-facing API.

  1. Open pyproject.toml of your project and find necessary to have requires-python field.
  2. Update it as follows (comments are crucial!):
# [[[cog
# import cog
# import cogeol
#
# cycle = cogeol.scientific()[-1]["cycle"]
# cog.out(f'requires-python = ">={cycle}"')
# ]]]
requires-python = ">=3.9"
# [[[end]]]

Now run the following from the command line:

> cog -c -r pyproject.toml

Now your requires-python field will be updated to the latest supported Python version!

For example (Python 3.11 is the latest supported version at the time of writing):

# [[[cog
# import cog
# import cogeol
#
# cycle = cogeol.scientific()[-1]["cycle"]
# cog.out(f'requires-python = ">={cycle}"')
# ]]]
requires-python = ">=3.11"
# [[[end]]] (sum: uZEo+p96oZ)

[!NOTE] Please notice a checksum, which verifies consistency of the changes at each run

Examples

Specifying Python version classifiers (click me)  

You can automate the classifiers in your pyproject.toml file like this:

# [[[cog
# import cog
# import cogeol
#
# for version in reversed(cogeol.scientific()):
#     cycle = version["cycle"]
#     cog.outl(f'  "Programming Language :: Python :: {cycle}",')
# ]]]
"Programming Language :: Python :: 3.11",
# [[[end]]]

Now run the following from the command line:

> cog -c -r pyproject.toml

and you should see the following (notice all versions are present!):

# [[[cog
# import cog
# import cogeol
#
# for version in reversed(cogeol.scientific()):
#     cycle = version["cycle"]
#     cog.outl(f'  "Programming Language :: Python :: {cycle}",')
# ]]]
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
# [[[end]]] (sum: FeG7grp2Dw)
Caching (click me)  

Let's assume you have the following code snippet in github-workflow.yml:

...
jobs:
  tests-reusable:
    strategy:
      matrix:
        python:
          #
          #           DO NOT EDIT UNTIL end marker
          #
          # [[[cog
          # import cog
          # import cogeol
          #
          # for version in reversed(cogeol.scientific()):
          #     cycle = version['cycle']
          #     cog.outl(f'          - "{cycle}"')
          # ]]]
          - "3.11"
          # [[[end]]] (sum: l3d2zGv79j)

in addition to your code in pyproject.toml using cogeol.

Now, if you run:

> cog -c -r pyproject.toml github-workflow.yml

The following will happen:

  • Both files will be updated with appropriate Python versions
  • Only one call to End of Life Date will be made (the results are cached on disk)

Next time you run the same command, the results will be read from the cache

Advanced (click me)  

For more examples check out this project's:

  • pyproject.toml file (see here)
  • Tests of the last three versions in GitHub Actions workflow (see here)

Contribute

We welcome your contributions! Start here:

Legal

  • This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
  • This project is copyrighted by open-nudge - the appropriate copyright notice is included in each file.

Metadata

Release files for cogeol 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cogeol 0.1.5
File Size Uploaded
cogeol-0.1.5.tar.gz 14.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cogeol 0.1.5
File Interpreter ABI Platform
cogeol-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 21.1 kB

Release files / cogeol-0.1.5.tar.gz

Download URL cogeol-0.1.5.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b19606bb1c84c8dcbb13c6b3622dcf4facd9e678e5308b72c186b7c9a5e76674
BLAKE2b-256 checksum
How to use checksums
f07a26a41c57d31f5b58d65239272daf9f8fb41db2b0b0d4a80641acda304511
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 13, 2025.

Transparency log

Release files / cogeol-0.1.5-py3-none-any.whl

Download URL cogeol-0.1.5-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6888ccd45d70bdfb10287ea2cd49538ba21545125e2843adf8180c7d80436275
BLAKE2b-256 checksum
How to use checksums
ee3011b47a7b0233167222cb4030e5de9b8f15eeb1484d7763b501dd533b1637
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 13, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.3

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page