mirror of
				https://github.com/astral-sh/uv.git
				synced 2025-10-31 12:06:13 +00:00 
			
		
		
		
	Fix trailing commas on Requires-Python in HTML indexes  (#1507)
				
					
				
			illustration and suggested fix for #1464
This commit is contained in:
		
							parent
							
								
									4f216f3a74
								
							
						
					
					
						commit
						8050370717
					
				
					 1 changed files with 65 additions and 1 deletions
				
			
		|  | @ -5,6 +5,7 @@ use tracing::instrument; | |||
| use url::Url; | ||||
| 
 | ||||
| use pep440_rs::VersionSpecifiers; | ||||
| use pypi_types::LenientVersionSpecifiers; | ||||
| use pypi_types::{BaseUrl, DistInfoMetadata, File, Hashes, Yanked}; | ||||
| 
 | ||||
| /// A parsed structure from PyPI "HTML" index format for a single package.
 | ||||
|  | @ -141,7 +142,7 @@ impl SimpleHtml { | |||
|         { | ||||
|             let requires_python = std::str::from_utf8(requires_python.as_bytes())?; | ||||
|             let requires_python = html_escape::decode_html_entities(requires_python); | ||||
|             Some(VersionSpecifiers::from_str(&requires_python)) | ||||
|             Some(LenientVersionSpecifiers::from_str(&requires_python).map(VersionSpecifiers::from)) | ||||
|         } else { | ||||
|             None | ||||
|         }; | ||||
|  | @ -770,4 +771,67 @@ mod tests { | |||
|         } | ||||
|         "###);
 | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn parse_file_requires_python_trailing_comma() { | ||||
|         let text = r#" | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <body> | ||||
|     <h1>Links for jinja2</h1> | ||||
|     <a href="/whl/Jinja2-3.1.2-py3-none-any.whl#sha256=6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" data-requires-python=">=3.8,">Jinja2-3.1.2-py3-none-any.whl</a><br/> | ||||
|   </body> | ||||
| </html> | ||||
|         "#;
 | ||||
|         let base = Url::parse("https://download.pytorch.org/whl/jinja2/").unwrap(); | ||||
|         let result = SimpleHtml::parse(text, &base).unwrap(); | ||||
|         insta::assert_debug_snapshot!(result, @r###" | ||||
|         SimpleHtml { | ||||
|             base: BaseUrl( | ||||
|                 Url { | ||||
|                     scheme: "https", | ||||
|                     cannot_be_a_base: false, | ||||
|                     username: "", | ||||
|                     password: None, | ||||
|                     host: Some( | ||||
|                         Domain( | ||||
|                             "download.pytorch.org", | ||||
|                         ), | ||||
|                     ), | ||||
|                     port: None, | ||||
|                     path: "/whl/jinja2/", | ||||
|                     query: None, | ||||
|                     fragment: None, | ||||
|                 }, | ||||
|             ), | ||||
|             files: [ | ||||
|                 File { | ||||
|                     dist_info_metadata: None, | ||||
|                     filename: "Jinja2-3.1.2-py3-none-any.whl", | ||||
|                     hashes: Hashes { | ||||
|                         sha256: Some( | ||||
|                             "6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61", | ||||
|                         ), | ||||
|                     }, | ||||
|                     requires_python: Some( | ||||
|                         Ok( | ||||
|                             VersionSpecifiers( | ||||
|                                 [ | ||||
|                                     VersionSpecifier { | ||||
|                                         operator: GreaterThanEqual, | ||||
|                                         version: "3.8", | ||||
|                                     }, | ||||
|                                 ], | ||||
|                             ), | ||||
|                         ), | ||||
|                     ), | ||||
|                     size: None, | ||||
|                     upload_time: None, | ||||
|                     url: "/whl/Jinja2-3.1.2-py3-none-any.whl#sha256=6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61", | ||||
|                     yanked: None, | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
|         "###);
 | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 David Szotten
						David Szotten