mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 11:14:33 +00:00 
			
		
		
		
	 f341d6017d
			
		
	
	
		f341d6017d
		
			
		
	
	
	
	
		
			
			These helpers make it easier to customize and inspect the config used to initialize interpreters. This is especially valuable in our tests. I found inspiration from the PyConfig API for the PyInterpreterConfig dict conversion stuff. As part of this PR I've also added a bunch of tests.
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			754 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			754 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| static inline int
 | |
| _config_dict_get(PyObject *dict, const char *name, PyObject **p_item)
 | |
| {
 | |
|     PyObject *item;
 | |
|     if (PyDict_GetItemStringRef(dict, name, &item) < 0) {
 | |
|         return -1;
 | |
|     }
 | |
|     if (item == NULL) {
 | |
|         // We do not set an exception.
 | |
|         return -1;
 | |
|     }
 | |
|     *p_item = item;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| static PyObject*
 | |
| config_dict_get(PyObject *dict, const char *name)
 | |
| {
 | |
|     PyObject *item;
 | |
|     if (_config_dict_get(dict, name, &item) < 0) {
 | |
|         if (!PyErr_Occurred()) {
 | |
|             PyErr_Format(PyExc_ValueError, "missing config key: %s", name);
 | |
|         }
 | |
|         return NULL;
 | |
|     }
 | |
|     return item;
 | |
| }
 | |
| 
 | |
| 
 | |
| static void
 | |
| config_dict_invalid_type(const char *name)
 | |
| {
 | |
|     PyErr_Format(PyExc_TypeError, "invalid config type: %s", name);
 | |
| }
 |