| 
									
										
										
										
											2013-10-12 00:13:50 +02:00
										 |  |  | """A minimal subset of the locale module used at interpreter startup
 | 
					
						
							|  |  |  | (imported by the _io module), in order to reduce startup time. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Don't import directly from third-party code; use the `locale` module instead! | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import _locale | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if sys.platform.startswith("win"): | 
					
						
							|  |  |  |     def getpreferredencoding(do_setlocale=True): | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  |         if sys.flags.utf8_mode: | 
					
						
							|  |  |  |             return 'UTF-8' | 
					
						
							| 
									
										
										
										
											2013-10-12 00:13:50 +02:00
										 |  |  |         return _locale._getdefaultlocale()[1] | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         _locale.CODESET | 
					
						
							| 
									
										
										
										
											2013-10-12 15:00:44 +02:00
										 |  |  |     except AttributeError: | 
					
						
							| 
									
										
										
										
											2016-12-17 09:19:11 +01:00
										 |  |  |         if hasattr(sys, 'getandroidapilevel'): | 
					
						
							|  |  |  |             # On Android langinfo.h and CODESET are missing, and UTF-8 is | 
					
						
							|  |  |  |             # always used in mbstowcs() and wcstombs(). | 
					
						
							|  |  |  |             def getpreferredencoding(do_setlocale=True): | 
					
						
							|  |  |  |                 return 'UTF-8' | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             def getpreferredencoding(do_setlocale=True): | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  |                 if sys.flags.utf8_mode: | 
					
						
							|  |  |  |                     return 'UTF-8' | 
					
						
							| 
									
										
										
										
											2016-12-17 09:19:11 +01:00
										 |  |  |                 # This path for legacy systems needs the more complex | 
					
						
							|  |  |  |                 # getdefaultlocale() function, import the full locale module. | 
					
						
							|  |  |  |                 import locale | 
					
						
							|  |  |  |                 return locale.getpreferredencoding(do_setlocale) | 
					
						
							| 
									
										
										
										
											2013-10-12 00:13:50 +02:00
										 |  |  |     else: | 
					
						
							|  |  |  |         def getpreferredencoding(do_setlocale=True): | 
					
						
							|  |  |  |             assert not do_setlocale | 
					
						
							| 
									
										
										
										
											2017-12-13 12:29:09 +01:00
										 |  |  |             if sys.flags.utf8_mode: | 
					
						
							|  |  |  |                 return 'UTF-8' | 
					
						
							| 
									
										
										
										
											2013-10-12 00:13:50 +02:00
										 |  |  |             result = _locale.nl_langinfo(_locale.CODESET) | 
					
						
							|  |  |  |             if not result and sys.platform == 'darwin': | 
					
						
							|  |  |  |                 # nl_langinfo can return an empty string | 
					
						
							|  |  |  |                 # when the setting has an invalid value. | 
					
						
							|  |  |  |                 # Default to UTF-8 in that case because | 
					
						
							|  |  |  |                 # UTF-8 is the default charset on OSX and | 
					
						
							|  |  |  |                 # returning nothing will crash the | 
					
						
							|  |  |  |                 # interpreter. | 
					
						
							|  |  |  |                 result = 'UTF-8' | 
					
						
							|  |  |  |             return result |