@@ -31,7 +31,8 @@ pub struct ResolutionMetadata {
31
31
// Optional fields
32
32
pub requires_dist : Box < [ Requirement < VerbatimParsedUrl > ] > ,
33
33
pub requires_python : Option < VersionSpecifiers > ,
34
- pub provides_extras : Box < [ ExtraName ] > ,
34
+ #[ serde( alias = "provides-extras" ) ]
35
+ pub provides_extra : Box < [ ExtraName ] > ,
35
36
/// Whether the version field is dynamic.
36
37
#[ serde( default ) ]
37
38
pub dynamic : bool ,
@@ -64,7 +65,7 @@ impl ResolutionMetadata {
64
65
. map ( |requires_python| LenientVersionSpecifiers :: from_str ( & requires_python) )
65
66
. transpose ( ) ?
66
67
. map ( VersionSpecifiers :: from) ;
67
- let provides_extras = headers
68
+ let provides_extra = headers
68
69
. get_all_values ( "Provides-Extra" )
69
70
. filter_map (
70
71
|provides_extra| match ExtraName :: from_owned ( provides_extra) {
@@ -85,7 +86,7 @@ impl ResolutionMetadata {
85
86
version,
86
87
requires_dist,
87
88
requires_python,
88
- provides_extras ,
89
+ provides_extra ,
89
90
dynamic,
90
91
} )
91
92
}
@@ -144,7 +145,7 @@ impl ResolutionMetadata {
144
145
. map ( |requires_python| LenientVersionSpecifiers :: from_str ( & requires_python) )
145
146
. transpose ( ) ?
146
147
. map ( VersionSpecifiers :: from) ;
147
- let provides_extras = headers
148
+ let provides_extra = headers
148
149
. get_all_values ( "Provides-Extra" )
149
150
. filter_map (
150
151
|provides_extra| match ExtraName :: from_owned ( provides_extra) {
@@ -162,7 +163,7 @@ impl ResolutionMetadata {
162
163
version,
163
164
requires_dist,
164
165
requires_python,
165
- provides_extras ,
166
+ provides_extra ,
166
167
dynamic,
167
168
} )
168
169
}
@@ -250,7 +251,7 @@ impl ResolutionMetadata {
250
251
. collect :: < Result < Box < _ > , _ > > ( ) ?;
251
252
252
253
// Extract the optional dependencies.
253
- let provides_extras = project
254
+ let provides_extra = project
254
255
. optional_dependencies
255
256
. unwrap_or_default ( )
256
257
. into_keys ( )
@@ -261,7 +262,7 @@ impl ResolutionMetadata {
261
262
version,
262
263
requires_dist,
263
264
requires_python,
264
- provides_extras ,
265
+ provides_extra ,
265
266
dynamic,
266
267
} )
267
268
}
@@ -370,7 +371,7 @@ mod tests {
370
371
assert_eq ! ( meta. version, Version :: new( [ 1 , 0 ] ) ) ;
371
372
assert ! ( meta. requires_python. is_none( ) ) ;
372
373
assert ! ( meta. requires_dist. is_empty( ) ) ;
373
- assert ! ( meta. provides_extras . is_empty( ) ) ;
374
+ assert ! ( meta. provides_extra . is_empty( ) ) ;
374
375
375
376
let s = r#"
376
377
[project]
@@ -384,7 +385,7 @@ mod tests {
384
385
assert_eq ! ( meta. version, Version :: new( [ 1 , 0 ] ) ) ;
385
386
assert_eq ! ( meta. requires_python, Some ( ">=3.6" . parse( ) . unwrap( ) ) ) ;
386
387
assert ! ( meta. requires_dist. is_empty( ) ) ;
387
- assert ! ( meta. provides_extras . is_empty( ) ) ;
388
+ assert ! ( meta. provides_extra . is_empty( ) ) ;
388
389
389
390
let s = r#"
390
391
[project]
@@ -399,7 +400,7 @@ mod tests {
399
400
assert_eq ! ( meta. version, Version :: new( [ 1 , 0 ] ) ) ;
400
401
assert_eq ! ( meta. requires_python, Some ( ">=3.6" . parse( ) . unwrap( ) ) ) ;
401
402
assert_eq ! ( * meta. requires_dist, [ "foo" . parse( ) . unwrap( ) ] ) ;
402
- assert ! ( meta. provides_extras . is_empty( ) ) ;
403
+ assert ! ( meta. provides_extra . is_empty( ) ) ;
403
404
404
405
let s = r#"
405
406
[project]
@@ -423,6 +424,6 @@ mod tests {
423
424
"bar; extra == \" dotenv\" " . parse( ) . unwrap( )
424
425
]
425
426
) ;
426
- assert_eq ! ( * meta. provides_extras , [ "dotenv" . parse( ) . unwrap( ) ] ) ;
427
+ assert_eq ! ( * meta. provides_extra , [ "dotenv" . parse( ) . unwrap( ) ] ) ;
427
428
}
428
429
}
0 commit comments