mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	GH-79634: Speed up pathlib globbing by removing joinpath() call. (#114623)
				
					
				
			Remove `self.joinpath('')` call that should have been removed in 6313cdde.
This makes `PathBase.glob('')` yield itself *without* adding a trailing slash. It's hard to say whether this is more or less correct, but at least everything else is faster, and there's no behaviour change in the public classes where empty glob patterns are disallowed.
			
			
This commit is contained in:
		
							parent
							
								
									7a470541e2
								
							
						
					
					
						commit
						823a38a960
					
				
					 3 changed files with 6 additions and 5 deletions
				
			
		|  | @ -771,7 +771,7 @@ def glob(self, pattern, *, case_sensitive=None, follow_symlinks=None): | |||
|         filter_paths = False | ||||
|         deduplicate_paths = False | ||||
|         sep = self.pathmod.sep | ||||
|         paths = iter([self.joinpath('')] if self.is_dir() else []) | ||||
|         paths = iter([self] if self.is_dir() else []) | ||||
|         while stack: | ||||
|             part = stack.pop() | ||||
|             if part in specials: | ||||
|  |  | |||
|  | @ -1232,6 +1232,8 @@ def test_glob_empty_pattern(self): | |||
|             list(p.glob('')) | ||||
|         with self.assertRaisesRegex(ValueError, 'Unacceptable pattern'): | ||||
|             list(p.glob('.')) | ||||
|         with self.assertRaisesRegex(ValueError, 'Unacceptable pattern'): | ||||
|             list(p.glob('./')) | ||||
| 
 | ||||
|     def test_glob_many_open_files(self): | ||||
|         depth = 30 | ||||
|  |  | |||
|  | @ -1733,12 +1733,11 @@ def test_glob_windows(self): | |||
|         self.assertEqual(set(map(str, p.glob("F*a"))), {f"{p}\\fileA"}) | ||||
| 
 | ||||
|     def test_glob_empty_pattern(self): | ||||
|         def _check(glob, expected): | ||||
|             self.assertEqual(set(glob), { P(self.base, q) for q in expected }) | ||||
|         P = self.cls | ||||
|         p = P(self.base) | ||||
|         _check(p.glob(""), [""]) | ||||
|         _check(p.glob("."), ["."]) | ||||
|         self.assertEqual(list(p.glob("")), [p]) | ||||
|         self.assertEqual(list(p.glob(".")), [p / "."]) | ||||
|         self.assertEqual(list(p.glob("./")), [p / "./"]) | ||||
| 
 | ||||
|     def test_glob_case_sensitive(self): | ||||
|         P = self.cls | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barney Gale
						Barney Gale