cogeol¶
Features¶
cogeol is a library which allows you to:
- Manage Python versions in your projects: no more checking if a given Python version reached its end of life, cogeol will do it for you.
- Align with Scientific Python SPEC0 ⧉:
cogeolwill allow you to align your project to the three latest supported Python versions - Caching:
cogeolreaches out to End of Life Date ⧉ to check the latest supported Python versions, and caches the results on disk to avoid unnecessary network requests. - Based on cog ⧉: Manage versions of Python by statically generated code (see examples below!)
Quick start¶
Installation¶
Usage¶
Tip
Check out the documentation ⧉ for all available functionalities and public-facing API.
- Open
pyproject.tomlof your project and find necessary to haverequires-pythonfield. - 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:
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]]]
# [[[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)