highlighter0.2.0
highlighter0.2.0
Published
Easy-to-use PEP 508 markers
pip install highlighter
Package Downloads
Authors
Project URLs
Requires Python
>=3.10
Dependencies
- packaging
>=22.0
- black
==23.12.1 ; extra == 'dev'
- checkdeps
==0.9.0 ; extra == 'dev'
- flake8
==7.0.0 ; extra == 'dev'
- mypy
==1.8.0 ; extra == 'dev'
- tox
==4.12.1 ; extra == 'dev'
- twine
==4.0.2 ; extra == 'dev'
- ufmt
==2.3.0 ; extra == 'dev'
- usort
==1.0.7 ; extra == 'dev'
- wheel
==0.42.0 ; extra == 'dev'
- coverage
>=6 ; extra == 'test'
highlighter
Easy to use PEP 508 markers. These are the strings in requirements after a
semicolon, such as enum34; python_version < '3.5'
means the package enum34
but only on some versions of python.
from packaging.markers import Marker
from packaging.requirements import Requirement
from highlighter import EnvironmentMarkers
req = Requirement("enum34; python_version < '3.5'")
env = EnvironmentMarkers.for_python("3.7.5", "win32")
env.match(req.marker) # False
# Lower-level interface, you can use Marker directly
m = Marker("python_version < '3.5'")
env.match(m) # False
# What about extras?
req = Requirement("somepackage[foo,bar]")
m = Marker("extra == 'foo'")
env.match(m, extras=req.extras) # True
Egg-info Extras
This also includes a function that can convert a requires.txt (as found in egg-info dirs, the only kind we have in sdists) into an equivalent list of requirements.txt lines using PEP 508 markers.
from highlighter.sdist import convert_sdist_requires
convert_sdist_requires("""\
[socks]
PySocks!=1.5.7,>=1.5.6
[socks:sys_platform == "win32" and python_version == "2.7"]
win_inet_pton
""") == """\
PySocks!=1.5.7,>=1.5.6; extra == 'socks'
win_inet_pton; (sys_platform == "win32" and python_version == "2.7") and extra == 'socks'
"""
License
highlighter is copyright Tim Hatch, and licensed under
the MIT license. I am providing code in this repository to you under an open
source license. This is my personal repository; the license you receive to
my code is from me and not from my employer. See the LICENSE
file for details.