mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	GH-103631: Fix PurePosixPath(PureWindowsPath(...)) separator handling (GH-104949)
				
					
				
			For backwards compatibility, accept backslashes as path separators in `PurePosixPath` if an instance of `PureWindowsPath` is supplied. This restores behaviour from Python 3.11. Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
		
							parent
							
								
									ad0be361c9
								
							
						
					
					
						commit
						328422ce61
					
				
					 3 changed files with 11 additions and 0 deletions
				
			
		|  | @ -300,6 +300,9 @@ def __init__(self, *args): | |||
|         for arg in args: | ||||
|             if isinstance(arg, PurePath): | ||||
|                 path = arg._raw_path | ||||
|                 if arg._flavour is ntpath and self._flavour is posixpath: | ||||
|                     # GH-103631: Convert separators for backwards compatibility. | ||||
|                     path = path.replace('\\', '/') | ||||
|             else: | ||||
|                 try: | ||||
|                     path = os.fspath(arg) | ||||
|  |  | |||
|  | @ -789,6 +789,12 @@ def test_div(self): | |||
|         pp = P('//a') / '/c' | ||||
|         self.assertEqual(pp, P('/c')) | ||||
| 
 | ||||
|     def test_parse_windows_path(self): | ||||
|         P = self.cls | ||||
|         p = P('c:', 'a', 'b') | ||||
|         pp = P(pathlib.PureWindowsPath('c:\\a\\b')) | ||||
|         self.assertEqual(p, pp) | ||||
| 
 | ||||
| 
 | ||||
| class PureWindowsPathTest(_BasePurePathTest, unittest.TestCase): | ||||
|     cls = pathlib.PureWindowsPath | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| Fix ``pathlib.PurePosixPath(pathlib.PureWindowsPath(...))`` not converting | ||||
| path separators to restore 3.11 compatible behavior. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barney Gale
						Barney Gale