diff --git a/build-support/known_py3_failures.txt b/build-support/known_py3_failures.txt index 5ed53849874..a8b4d2bdb2a 100644 --- a/build-support/known_py3_failures.txt +++ b/build-support/known_py3_failures.txt @@ -5,7 +5,6 @@ tests/python/pants_test/backend/jvm/tasks:jar_publish tests/python/pants_test/backend/jvm/tasks:junit_run tests/python/pants_test/backend/jvm/tasks:resources_task tests/python/pants_test/backend/python/tasks:tasks -tests/python/pants_test/backend/python:pants_requirement tests/python/pants_test/binaries:binaries tests/python/pants_test/build_graph:build_file_parser tests/python/pants_test/build_graph:build_graph diff --git a/src/python/pants/backend/python/pants_requirement.py b/src/python/pants/backend/python/pants_requirement.py index e60311c8b20..f1d471c7426 100644 --- a/src/python/pants/backend/python/pants_requirement.py +++ b/src/python/pants/backend/python/pants_requirement.py @@ -50,9 +50,7 @@ def __call__(self, name=None, dist=None): msg='The {} target only works for pantsbuild.pants ' 'distributions, given {}'.format(self.alias, dist)) - # TODO(John Sirois): Modify to constraint to >=3.5,<4 as part of - # https://github.com/pantsbuild/pants/issues/6062 - env_marker = "python_version>='2.7' and python_version<'3'" + env_marker = "python_version>='3.4' or (python_version>='2.7' and python_version<'3')" requirement = PythonRequirement(requirement="{key}=={version} ; {env_marker}" .format(key=dist, diff --git a/tests/python/pants_test/backend/python/test_pants_requirement.py b/tests/python/pants_test/backend/python/test_pants_requirement.py index ef73ef97337..7c2ef55fe88 100644 --- a/tests/python/pants_test/backend/python/test_pants_requirement.py +++ b/tests/python/pants_test/backend/python/test_pants_requirement.py @@ -35,9 +35,14 @@ def key(python_requirement): self.assertIsNotNone(req.requirement.marker) self.assertTrue(req.requirement.marker.evaluate(), 'pants_requirement() should always work in the current test environment') - self.assertFalse(req.requirement.marker.evaluate({'python_version': '3.5'})) - self.assertFalse(req.requirement.marker.evaluate({'python_version': '2.6'})) - self.assertTrue(req.requirement.marker.evaluate({'python_version': '2.7'})) + + def evaluate_version(version): + return req.requirement.marker.evaluate({'python_version': version}) + + allowed_versions = {'2.7', '3.4', '3.5', '3.6', '3.7'} + + self.assertFalse(evaluate_version('2.6')) + self.assertTrue(all(evaluate_version(v) for v in allowed_versions)) def test_default_name(self): self.add_to_build_file('3rdparty/python/pants', 'pants_requirement()')