@@ -238,7 +238,7 @@ def get_allof_constraints(cls, clause):
238238 return allof_constraints
239239
240240
241- def get_npm_version_constraint_for_tilde_and_caret (string , cls ):
241+ def get_npm_version_constraints_from_semver_npm_spec (string , cls ):
242242 """
243243 Return a VersionConstraint for the provided ``string``.
244244 """
@@ -254,7 +254,6 @@ def get_npm_version_constraint_for_tilde_and_caret(string, cls):
254254 anyof_constraints .extend (alloc )
255255 else :
256256 raise ValueError (f"Unknown clause type: { spec !r} " )
257-
258257 return anyof_constraints
259258
260259
@@ -289,39 +288,58 @@ def from_native(cls, string):
289288 )
290289
291290 constraints = []
292- comparator = ""
293291 vrc = cls .version_class
294292 # A constraint item can be a comparator or a version or a version with comparator
295293 # If it's empty continue
296294 # If it's in `vers_by_native_comparators`, append it with the comparator and continue
297295 # If it's a version, make version constraint from the version and use the comparator from the previous item and make comparator empty
298296 # If it's a version with comparator, use split_req to get version and comparator to form constraint and make comparator empty
299- for constraint_item in string .split (" " ):
300- if not constraint_item or constraint_item == "||" :
301- continue
302- if "" .join ([comparator , constraint_item ]) in cls .vers_by_native_comparators :
303- comparator = "" .join ([comparator , constraint_item ])
304- comparator = cls .vers_by_native_comparators [comparator ]
297+
298+ for range in string .split ("||" ):
299+ if " - " in range :
300+ constraints .extend (get_npm_version_constraints_from_semver_npm_spec (range , cls ))
305301 continue
306- if comparator :
307- constraint_item = constraint_item .lstrip ("vV" )
308- constraints .append (
309- VersionConstraint (comparator = comparator , version = vrc (constraint_item ))
310- )
311- else :
312- if constraint_item .startswith ("~" ) or constraint_item .startswith ("^" ):
313- constraints .extend (
314- get_npm_version_constraint_for_tilde_and_caret (constraint_item , cls )
315- )
316- else :
317- comparator , version_constraint = split_req (
318- constraint_item , cls .vers_by_native_comparators , default = "="
319- )
320- version_constraint = version_constraint .lstrip ("vV" )
302+ comparator = ""
303+ for constraint in range .split (" " ):
304+ if not constraint :
305+ continue
306+ if "" .join ([comparator , constraint ]) in cls .vers_by_native_comparators :
307+ comparator = "" .join ([comparator , constraint ])
308+ comparator = cls .vers_by_native_comparators [comparator ]
309+ continue
310+ if comparator :
311+ if ".x" in constraint :
312+ constraints .extend (
313+ get_npm_version_constraints_from_semver_npm_spec (constraint , cls )
314+ )
315+ print (constraints )
316+ continue
317+ constraint = constraint .lstrip ("vV" )
321318 constraints .append (
322- VersionConstraint (comparator = comparator , version = vrc (version_constraint ))
319+ VersionConstraint (comparator = comparator , version = vrc (constraint ))
323320 )
324- comparator = ""
321+ else :
322+ if ".x" in constraint :
323+ constraints .extend (
324+ get_npm_version_constraints_from_semver_npm_spec (constraint , cls )
325+ )
326+ print (constraints )
327+ continue
328+ if constraint .startswith ("~" ) or constraint .startswith ("^" ):
329+ constraints .extend (
330+ get_npm_version_constraints_from_semver_npm_spec (constraint , cls )
331+ )
332+ else :
333+ comparator , version_constraint = split_req (
334+ constraint , cls .vers_by_native_comparators , default = "="
335+ )
336+ version_constraint = version_constraint .lstrip ("vV" )
337+ constraints .append (
338+ VersionConstraint (
339+ comparator = comparator , version = vrc (version_constraint )
340+ )
341+ )
342+ comparator = ""
325343 return cls (constraints = constraints )
326344
327345
0 commit comments