mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	Drop pytomlpp dependency for Python >= 3.11
Rely on tomllib for Python >= 3.11
This commit is contained in:
		
							parent
							
								
									dbed8da284
								
							
						
					
					
						commit
						ac430a9eaf
					
				
					 2 changed files with 34 additions and 9 deletions
				
			
		|  | @ -15,4 +15,4 @@ setproctitle==1.3.3 | ||||||
| redis==5.0.4 | redis==5.0.4 | ||||||
| markdown-it-py==3.0.0 | markdown-it-py==3.0.0 | ||||||
| fasttext-predict==0.9.2.2 | fasttext-predict==0.9.2.2 | ||||||
| pytomlpp==1.0.13 | pytomlpp==1.0.13; python_version < '3.11' | ||||||
|  |  | ||||||
|  | @ -13,7 +13,18 @@ import copy | ||||||
| import typing | import typing | ||||||
| import logging | import logging | ||||||
| import pathlib | import pathlib | ||||||
| import pytomlpp as toml | 
 | ||||||
|  | try: | ||||||
|  |     import tomllib | ||||||
|  | 
 | ||||||
|  |     pytomlpp = None | ||||||
|  |     USE_TOMLLIB = True | ||||||
|  | except ImportError: | ||||||
|  |     import pytomlpp | ||||||
|  | 
 | ||||||
|  |     tomllib = None | ||||||
|  |     USE_TOMLLIB = False | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| __all__ = ['Config', 'UNSET', 'SchemaIssue'] | __all__ = ['Config', 'UNSET', 'SchemaIssue'] | ||||||
| 
 | 
 | ||||||
|  | @ -61,7 +72,7 @@ class Config: | ||||||
|         # init schema |         # init schema | ||||||
| 
 | 
 | ||||||
|         log.debug("load schema file: %s", schema_file) |         log.debug("load schema file: %s", schema_file) | ||||||
|         cfg = cls(cfg_schema=toml.load(schema_file), deprecated=deprecated) |         cfg = cls(cfg_schema=toml_load(schema_file), deprecated=deprecated) | ||||||
|         if not cfg_file.exists(): |         if not cfg_file.exists(): | ||||||
|             log.warning("missing config file: %s", cfg_file) |             log.warning("missing config file: %s", cfg_file) | ||||||
|             return cfg |             return cfg | ||||||
|  | @ -69,12 +80,7 @@ class Config: | ||||||
|         # load configuration |         # load configuration | ||||||
| 
 | 
 | ||||||
|         log.debug("load config file: %s", cfg_file) |         log.debug("load config file: %s", cfg_file) | ||||||
|         try: |         upd_cfg = toml_load(cfg_file) | ||||||
|             upd_cfg = toml.load(cfg_file) |  | ||||||
|         except toml.DecodeError as exc: |  | ||||||
|             msg = str(exc).replace('\t', '').replace('\n', ' ') |  | ||||||
|             log.error("%s: %s", cfg_file, msg) |  | ||||||
|             raise |  | ||||||
| 
 | 
 | ||||||
|         is_valid, issue_list = cfg.validate(upd_cfg) |         is_valid, issue_list = cfg.validate(upd_cfg) | ||||||
|         for msg in issue_list: |         for msg in issue_list: | ||||||
|  | @ -176,6 +182,25 @@ class Config: | ||||||
|         return getattr(m, name) |         return getattr(m, name) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def toml_load(file_name): | ||||||
|  |     if USE_TOMLLIB: | ||||||
|  |         # Python >= 3.11 | ||||||
|  |         try: | ||||||
|  |             with open(file_name, "rb") as f: | ||||||
|  |                 return tomllib.load(f) | ||||||
|  |         except tomllib.TOMLDecodeError as exc: | ||||||
|  |             msg = str(exc).replace('\t', '').replace('\n', ' ') | ||||||
|  |             log.error("%s: %s", file_name, msg) | ||||||
|  |             raise | ||||||
|  |     # fallback to pytomlpp for Python < 3.11 | ||||||
|  |     try: | ||||||
|  |         return pytomlpp.load(file_name) | ||||||
|  |     except pytomlpp.DecodeError as exc: | ||||||
|  |         msg = str(exc).replace('\t', '').replace('\n', ' ') | ||||||
|  |         log.error("%s: %s", file_name, msg) | ||||||
|  |         raise | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| # working with dictionaries | # working with dictionaries | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre Flament
						Alexandre Flament