Skip to content

Commit 7d9c56e

Browse files
Stephen C. PopeDescartes Labs Build
authored andcommitted
[PLAT-2638] Remove dependencies on setuptools and pkg_resources (#12879)
GitOrigin-RevId: 4770364d322f6c26baf113ec85b8171e9c8b8730
1 parent 1fda120 commit 7d9c56e

2 files changed

Lines changed: 25 additions & 45 deletions

File tree

descarteslabs/core/compute/function.py

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
Union,
4343
)
4444

45-
import pkg_resources
45+
from packaging.requirements import InvalidRequirement, Requirement
4646
from strenum import StrEnum
4747

4848
import descarteslabs.exceptions as exceptions
@@ -711,11 +711,6 @@ def _include_init_files(self, dir_path, archive, sys_path):
711711
def _bundle_requirements(self, requirements):
712712
"""Bundle the requirements into the archive."""
713713

714-
if not pkg_resources:
715-
warnings.warn(
716-
"Your Python does not have a recent version of `setuptools`. "
717-
"For a better experience update your environment by running `pip install -U setuptools`."
718-
)
719714
if isinstance(requirements, str):
720715
return self._requirements_file(requirements)
721716
else:
@@ -735,29 +730,29 @@ def _requirements_file(self, requirements):
735730
def _requirements_list(self, requirements):
736731
"""Validate the requirements list."""
737732

738-
if pkg_resources:
739-
bad_requirements = []
740-
for requirement in requirements:
741-
try:
742-
pkg_resources.Requirement.parse(requirement)
743-
except ValueError:
744-
# comment or pip-specific option not understood by pkg_resources
745-
if requirement.startswith("#") or requirement.startswith("-"):
746-
continue
747-
if requirement.startswith("https://"):
733+
bad_requirements = []
734+
for requirement in requirements:
735+
try:
736+
Requirement(requirement)
737+
except InvalidRequirement:
738+
# comment or pip-specific option not understood by packaging
739+
if requirement.startswith("#") or requirement.startswith("-"):
740+
continue
741+
if requirement.startswith("https://"):
742+
continue
743+
# e.g. torch-2.0.1+cpu which packaging doesn't understand
744+
if "+" in requirement:
745+
try:
746+
Requirement(requirement.rsplit("+")[0])
748747
continue
749-
# e.g. torch-2.0.1+cpu which pkg_resource doesn't understand
750-
if "+" in requirement:
751-
try:
752-
pkg_resources.Requirement.parse(requirement.rsplit("+")[0])
753-
continue
754-
except ValueError:
755-
pass
756-
bad_requirements.append(requirement)
757-
if bad_requirements:
758-
raise ValueError(
759-
"Invalid Python requirements: {}".format(",".join(bad_requirements))
760-
)
748+
except InvalidRequirement:
749+
pass
750+
bad_requirements.append(requirement)
751+
if bad_requirements:
752+
raise ValueError(
753+
"Invalid Python requirements: {}".format(",".join(bad_requirements))
754+
)
755+
761756
return "\n".join(requirements)
762757

763758
def _sys_path_prefix(self, path):

setup.py

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import ast
1818
import re
19-
import sys
2019

2120
from setuptools import find_packages, setup
2221

@@ -35,18 +34,6 @@
3534
)
3635

3736

38-
def check_setuptools():
39-
import pkg_resources
40-
41-
try:
42-
list(pkg_resources.parse_requirements('foo;platform_system!="Windows"'))
43-
except pkg_resources.RequirementParseError:
44-
sys.exit(
45-
"Your Python is using an outdated version of `setuptools`. Please "
46-
"run `pip install -U setuptools` and try again."
47-
)
48-
49-
5037
def do_setup():
5138
viz_requires = [
5239
"matplotlib>=3.1.2",
@@ -97,20 +84,19 @@ def do_setup():
9784
"blosc>=1.11.2",
9885
"cachetools>=3.1.1",
9986
"dill>=0.3.6",
100-
"dynaconf>=3.1.11",
87+
"dynaconf>=3.2.1",
10188
"geojson>=2.5.0",
10289
"geopandas>=0.13.2",
10390
"imagecodecs>=2023.3.16",
10491
"lazy_object_proxy>=1.7.1",
10592
"mercantile>=1.1.3",
10693
"numpy>=1.22.0;python_version>='3.9' and python_version<'3.11'",
10794
"numpy>=1.23.2;python_version>='3.11'",
95+
"packaging>=25.0",
10896
"Pillow>=9.2.0",
10997
"pyarrow>=14.0.1",
11098
"pydantic>=2.4.0",
11199
"requests>=2.32.3,<3",
112-
# It is not obvious but dynaconf requires pkg_resources from setuptools.
113-
"setuptools>=70.0.0",
114100
"shapely>=2.0.0",
115101
"strenum>=0.4.8",
116102
"tifffile>=2023.9.26",
@@ -127,5 +113,4 @@ def do_setup():
127113

128114

129115
if __name__ == "__main__":
130-
check_setuptools()
131116
do_setup()

0 commit comments

Comments
 (0)