1515# This module has no IO at all, and none should be added.
1616
1717import collections
18- import distutils . version
18+ import packaging . requirements
1919import packaging .specifiers
20- import pkg_resources
20+ import packaging .utils
21+ import packaging .version
2122import re
2223
2324
@@ -37,7 +38,7 @@ def key_specifier(a):
3738 '===' : 1 , '==' : 1 , '~=' : 1 , '!=' : 1 ,
3839 '<' : 2 , '<=' : 2 }
3940 a = a ._spec
40- return (weight [a [0 ]], distutils .version .LooseVersion (a [1 ]))
41+ return (weight [a [0 ]], packaging .version .parse (a [1 ]))
4142
4243
4344class Requirement (collections .namedtuple ('Requirement' ,
@@ -81,7 +82,7 @@ def to_line(self, marker_sep=';', line_prefix='', comment_prefix=' ',
8182
8283def canonical_name (req_name ):
8384 """Return the canonical form of req_name."""
84- return pkg_resources . safe_name ( req_name ). lower ( )
85+ return packaging . utils . canonicalize_name ( req_name )
8586
8687
8788def parse (content , permit_urls = False ):
@@ -127,7 +128,7 @@ def parse_line(req_line, permit_urls=False):
127128 hash_pos = hash_pos + parse_start
128129 else :
129130 # Trigger an early failure before we look for ':'
130- pkg_resources . Requirement . parse (req_line )
131+ packaging . requirements . Requirement (req_line )
131132 else :
132133 parse_start = 0
133134 location = ''
@@ -149,8 +150,8 @@ def parse_line(req_line, permit_urls=False):
149150 specifier = ''
150151 elif req_line :
151152 # Pulled out a requirement
152- parsed = pkg_resources . Requirement . parse (req_line )
153- name = parsed .project_name
153+ parsed = packaging . requirements . Requirement (req_line )
154+ name = parsed .name
154155 extras = parsed .extras
155156 specifier = str (parsed .specifier )
156157 else :
0 commit comments