• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:config

26 /* --- Command line options --------------------------------------- */
30 "usage: %ls [option] ... [-c cmd | -m mod | file | -] [arg] ...\n";
36 -b : issue warnings about str(bytes_instance), str(bytearray_instance)\n\
37 and comparing bytes/bytearray with str. (-bb: issue errors)\n\
38 -B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x\n\
39 -c cmd : program passed in as string (terminates option list)\n\
40 -d : turn on parser debugging output (for experts only, only works on\n\
42 -E : ignore PYTHON* environment variables (such as PYTHONPATH)\n\
43 -h : print this help message and exit (also -? or --help)\n\
44 -i : inspect interactively after running script; forces a prompt even\n\
46 -I : isolate Python from the user's environment (implies -E and -s)\n\
47 -m mod : run library module as a script (terminates option list)\n\
48 -O : remove assert and __debug__-dependent statements; add .opt-1 before\n\
50 -OO : do -O changes and also discard docstrings; add .opt-2 before\n\
52 -P : don't prepend a potentially unsafe path to sys.path\n\
53 -q : don't print version and copyright messages on interactive startup\n\
54 -s : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\
55 -S : don't imply 'import site' on initialization\n\
56 -u : force the stdout and stderr streams to be unbuffered;\n\
58 -v : verbose (trace import statements); also PYTHONVERBOSE=x\n\
60 -V : print the Python version number and exit (also --version)\n\
62 -W arg : warning control; arg is action:message:category:module:lineno\n\
64 -x : skip first line of source, allowing use of non-Unix forms of #!cmd\n\
65 -X opt : set implementation-specific option\n\
66 --check-hash-based-pycs always|default|never:\n\
67 control how Python invalidates hash-based .pyc files\n\
68 --help-env : print help about Python environment variables and exit\n\
69 --help-xoptions : print help about implementation-specific -X options and exit\n\
70 --help-all : print complete help information and exit\n\
73 - : program read from stdin (default; interactive mode if a tty)\n\
78 The following implementation-specific options are available:\n\
80 -X faulthandler: enable faulthandler\n\
82 -X showrefcount: output the total reference count and number of used\n\
86 -X tracemalloc: start tracing Python memory allocations using the\n\
88 traceback of a trace. Use -X tracemalloc=NFRAME to start tracing with a\n\
91 -X importtime: show how long each import takes. It shows module name,\n\
93 nested imports). Note that its output may be broken in multi-threaded\n\
94 application. Typical usage is python3 -X importtime -c 'import asyncio'\n\
96 -X dev: enable CPython's \"development mode\", introducing additional runtime\n\
99 * Add default warning filter, as -W default\n\
107 -X utf8: enable UTF-8 mode for operating system interfaces, overriding the default\n\
108 locale-aware mode. -X utf8=0 explicitly disables UTF-8 mode (even when it would\n\
111 -X pycache_prefix=PATH: enable writing .pyc files to a parallel tree rooted at the\n\
114 -X warn_default_encoding: enable opt-in EncodingWarning for 'encoding=None'\n\
116 -X no_debug_ranges: disable the inclusion of the tables mapping extra location \n\
122 -X frozen_modules=[on|off]: whether or not frozen modules should be used.\n\
125 -X int_max_str_digits=number: limit the size of int<->str conversions.\n\
129 /* Envvars that don't have equivalent command-line options are listed first */
133 "PYTHONPATH : '%lc'-separated list of directories prefixed to the\n"
140 "PYTHONUTF8: if set to 1, enable the UTF-8 mode.\n"
161 "PYTHONWARNDEFAULTENCODING: enable opt-in EncodingWarning for 'encoding=None'.\n"
167 "These variables have equivalent command-line parameters (see --help for details):\n"
168 "PYTHONDEBUG : enable parser debug mode (-d)\n"
169 "PYTHONDONTWRITEBYTECODE : don't write .pyc files (-B)\n"
170 "PYTHONINSPECT : inspect interactively after running script (-i)\n"
172 " (-X int_max_str_digits=number)\n"
173 "PYTHONNOUSERSITE : disable user site directory (-s)\n"
174 "PYTHONOPTIMIZE : enable level 1 optimizations (-O)\n"
175 "PYTHONUNBUFFERED : disable stdout/stderr buffering (-u)\n"
176 "PYTHONVERBOSE : trace import statements (-v)\n"
177 "PYTHONWARNINGS=arg : warning control (-W arg)\n";
186 /* --- Global configuration variables ----------------------------- */
188 /* UTF-8 mode (PEP 540): if equals to 1, use the UTF-8 encoding, and change
202 int Py_NoUserSiteDirectory = 0; /* for -s and site.py */
204 int Py_HashRandomizationFlag = 0; /* for -R and PYTHONHASHSEED */
205 int Py_IsolatedFlag = 0; /* for -I, isolate from user's env */
207 int Py_LegacyWindowsFSEncodingFlag = 0; /* Uses mbcs instead of utf-8 */
292 /* --- PyStatus ----------------------------------------------- */
338 /* --- PyWideStringList ------------------------------------------------ */
344 assert(list->length >= 0); in _PyWideStringList_CheckConsistency()
345 if (list->length != 0) { in _PyWideStringList_CheckConsistency()
346 assert(list->items != NULL); in _PyWideStringList_CheckConsistency()
348 for (Py_ssize_t i = 0; i < list->length; i++) { in _PyWideStringList_CheckConsistency()
349 assert(list->items[i] != NULL); in _PyWideStringList_CheckConsistency()
360 for (Py_ssize_t i=0; i < list->length; i++) { in _PyWideStringList_Clear()
361 PyMem_RawFree(list->items[i]); in _PyWideStringList_Clear()
363 PyMem_RawFree(list->items); in _PyWideStringList_Clear()
364 list->length = 0; in _PyWideStringList_Clear()
365 list->items = NULL; in _PyWideStringList_Clear()
375 if (list2->length == 0) { in _PyWideStringList_Copy()
382 size_t size = list2->length * sizeof(list2->items[0]); in _PyWideStringList_Copy()
385 return -1; in _PyWideStringList_Copy()
388 for (Py_ssize_t i=0; i < list2->length; i++) { in _PyWideStringList_Copy()
389 wchar_t *item = _PyMem_RawWcsdup(list2->items[i]); in _PyWideStringList_Copy()
392 return -1; in _PyWideStringList_Copy()
408 Py_ssize_t len = list->length; in PyWideStringList_Insert()
425 size_t size = (len + 1) * sizeof(list->items[0]); in PyWideStringList_Insert()
426 wchar_t **items2 = (wchar_t **)PyMem_RawRealloc(list->items, size); in PyWideStringList_Insert()
435 (len - index) * sizeof(items2[0])); in PyWideStringList_Insert()
439 list->items = items2; in PyWideStringList_Insert()
440 list->length++; in PyWideStringList_Insert()
448 return PyWideStringList_Insert(list, list->length, item); in PyWideStringList_Append()
455 for (Py_ssize_t i = 0; i < list2->length; i++) { in _PyWideStringList_Extend()
456 PyStatus status = PyWideStringList_Append(list, list2->items[i]); in _PyWideStringList_Extend()
468 for (Py_ssize_t i = 0; i < list->length; i++) { in _PyWideStringList_Find()
469 if (wcscmp(list->items[i], item) == 0) { in _PyWideStringList_Find()
482 PyObject *pylist = PyList_New(list->length); in _PyWideStringList_AsList()
487 for (Py_ssize_t i = 0; i < list->length; i++) { in _PyWideStringList_AsList()
488 PyObject *item = PyUnicode_FromWideChar(list->items[i], -1); in _PyWideStringList_AsList()
499 /* --- Py_SetStandardStreamEncoding() ----------------------------- */
513 return -1; in Py_SetStandardStreamEncoding()
535 res = -2; in Py_SetStandardStreamEncoding()
545 res = -3; in Py_SetStandardStreamEncoding()
584 /* --- Py_GetArgcArgv() ------------------------------------------- */
627 /* --- PyConfig ---------------------------------------------- */
634 config_check_consistency(const PyConfig *config) in config_check_consistency() argument
636 /* Check config consistency */ in config_check_consistency()
637 assert(config->isolated >= 0); in config_check_consistency()
638 assert(config->use_environment >= 0); in config_check_consistency()
639 assert(config->dev_mode >= 0); in config_check_consistency()
640 assert(config->install_signal_handlers >= 0); in config_check_consistency()
641 assert(config->use_hash_seed >= 0); in config_check_consistency()
642 assert(config->hash_seed <= MAX_HASH_SEED); in config_check_consistency()
643 assert(config->faulthandler >= 0); in config_check_consistency()
644 assert(config->tracemalloc >= 0); in config_check_consistency()
645 assert(config->import_time >= 0); in config_check_consistency()
646 assert(config->code_debug_ranges >= 0); in config_check_consistency()
647 assert(config->show_ref_count >= 0); in config_check_consistency()
648 assert(config->dump_refs >= 0); in config_check_consistency()
649 assert(config->malloc_stats >= 0); in config_check_consistency()
650 assert(config->site_import >= 0); in config_check_consistency()
651 assert(config->bytes_warning >= 0); in config_check_consistency()
652 assert(config->warn_default_encoding >= 0); in config_check_consistency()
653 assert(config->inspect >= 0); in config_check_consistency()
654 assert(config->interactive >= 0); in config_check_consistency()
655 assert(config->optimization_level >= 0); in config_check_consistency()
656 assert(config->parser_debug >= 0); in config_check_consistency()
657 assert(config->write_bytecode >= 0); in config_check_consistency()
658 assert(config->verbose >= 0); in config_check_consistency()
659 assert(config->quiet >= 0); in config_check_consistency()
660 assert(config->user_site_directory >= 0); in config_check_consistency()
661 assert(config->parse_argv >= 0); in config_check_consistency()
662 assert(config->configure_c_stdio >= 0); in config_check_consistency()
663 assert(config->buffered_stdio >= 0); in config_check_consistency()
664 assert(_PyWideStringList_CheckConsistency(&config->orig_argv)); in config_check_consistency()
665 assert(_PyWideStringList_CheckConsistency(&config->argv)); in config_check_consistency()
666 /* sys.argv must be non-empty: empty argv is replaced with [''] */ in config_check_consistency()
667 assert(config->argv.length >= 1); in config_check_consistency()
668 assert(_PyWideStringList_CheckConsistency(&config->xoptions)); in config_check_consistency()
669 assert(_PyWideStringList_CheckConsistency(&config->warnoptions)); in config_check_consistency()
670 assert(_PyWideStringList_CheckConsistency(&config->module_search_paths)); in config_check_consistency()
671 assert(config->module_search_paths_set >= 0); in config_check_consistency()
672 assert(config->filesystem_encoding != NULL); in config_check_consistency()
673 assert(config->filesystem_errors != NULL); in config_check_consistency()
674 assert(config->stdio_encoding != NULL); in config_check_consistency()
675 assert(config->stdio_errors != NULL); in config_check_consistency()
677 assert(config->legacy_windows_stdio >= 0); in config_check_consistency()
679 /* -c and -m options are exclusive */ in config_check_consistency()
680 assert(!(config->run_command != NULL && config->run_module != NULL)); in config_check_consistency()
681 assert(config->check_hash_pycs_mode != NULL); in config_check_consistency()
682 assert(config->_install_importlib >= 0); in config_check_consistency()
683 assert(config->pathconfig_warnings >= 0); in config_check_consistency()
684 assert(config->_is_python_build >= 0); in config_check_consistency()
685 assert(config->safe_path >= 0); in config_check_consistency()
686 // config->use_frozen_modules is initialized later in config_check_consistency()
693 /* Free memory allocated in config, but don't clear all attributes */
695 PyConfig_Clear(PyConfig *config) in PyConfig_Clear() argument
703 CLEAR(config->pycache_prefix); in PyConfig_Clear()
704 CLEAR(config->pythonpath_env); in PyConfig_Clear()
705 CLEAR(config->home); in PyConfig_Clear()
706 CLEAR(config->program_name); in PyConfig_Clear()
708 _PyWideStringList_Clear(&config->argv); in PyConfig_Clear()
709 _PyWideStringList_Clear(&config->warnoptions); in PyConfig_Clear()
710 _PyWideStringList_Clear(&config->xoptions); in PyConfig_Clear()
711 _PyWideStringList_Clear(&config->module_search_paths); in PyConfig_Clear()
712 config->module_search_paths_set = 0; in PyConfig_Clear()
713 CLEAR(config->stdlib_dir); in PyConfig_Clear()
715 CLEAR(config->executable); in PyConfig_Clear()
716 CLEAR(config->base_executable); in PyConfig_Clear()
717 CLEAR(config->prefix); in PyConfig_Clear()
718 CLEAR(config->base_prefix); in PyConfig_Clear()
719 CLEAR(config->exec_prefix); in PyConfig_Clear()
720 CLEAR(config->base_exec_prefix); in PyConfig_Clear()
721 CLEAR(config->platlibdir); in PyConfig_Clear()
723 CLEAR(config->filesystem_encoding); in PyConfig_Clear()
724 CLEAR(config->filesystem_errors); in PyConfig_Clear()
725 CLEAR(config->stdio_encoding); in PyConfig_Clear()
726 CLEAR(config->stdio_errors); in PyConfig_Clear()
727 CLEAR(config->run_command); in PyConfig_Clear()
728 CLEAR(config->run_module); in PyConfig_Clear()
729 CLEAR(config->run_filename); in PyConfig_Clear()
730 CLEAR(config->check_hash_pycs_mode); in PyConfig_Clear()
732 _PyWideStringList_Clear(&config->orig_argv); in PyConfig_Clear()
738 _PyConfig_InitCompatConfig(PyConfig *config) in _PyConfig_InitCompatConfig() argument
740 memset(config, 0, sizeof(*config)); in _PyConfig_InitCompatConfig()
742 config->_config_init = (int)_PyConfig_INIT_COMPAT; in _PyConfig_InitCompatConfig()
743 config->isolated = -1; in _PyConfig_InitCompatConfig()
744 config->use_environment = -1; in _PyConfig_InitCompatConfig()
745 config->dev_mode = -1; in _PyConfig_InitCompatConfig()
746 config->install_signal_handlers = 1; in _PyConfig_InitCompatConfig()
747 config->use_hash_seed = -1; in _PyConfig_InitCompatConfig()
748 config->faulthandler = -1; in _PyConfig_InitCompatConfig()
749 config->tracemalloc = -1; in _PyConfig_InitCompatConfig()
750 config->module_search_paths_set = 0; in _PyConfig_InitCompatConfig()
751 config->parse_argv = 0; in _PyConfig_InitCompatConfig()
752 config->site_import = -1; in _PyConfig_InitCompatConfig()
753 config->bytes_warning = -1; in _PyConfig_InitCompatConfig()
754 config->warn_default_encoding = 0; in _PyConfig_InitCompatConfig()
755 config->inspect = -1; in _PyConfig_InitCompatConfig()
756 config->interactive = -1; in _PyConfig_InitCompatConfig()
757 config->optimization_level = -1; in _PyConfig_InitCompatConfig()
758 config->parser_debug= -1; in _PyConfig_InitCompatConfig()
759 config->write_bytecode = -1; in _PyConfig_InitCompatConfig()
760 config->verbose = -1; in _PyConfig_InitCompatConfig()
761 config->quiet = -1; in _PyConfig_InitCompatConfig()
762 config->user_site_directory = -1; in _PyConfig_InitCompatConfig()
763 config->configure_c_stdio = 0; in _PyConfig_InitCompatConfig()
764 config->buffered_stdio = -1; in _PyConfig_InitCompatConfig()
765 config->_install_importlib = 1; in _PyConfig_InitCompatConfig()
766 config->check_hash_pycs_mode = NULL; in _PyConfig_InitCompatConfig()
767 config->pathconfig_warnings = -1; in _PyConfig_InitCompatConfig()
768 config->_init_main = 1; in _PyConfig_InitCompatConfig()
769 config->_isolated_interpreter = 0; in _PyConfig_InitCompatConfig()
771 config->legacy_windows_stdio = -1; in _PyConfig_InitCompatConfig()
774 config->use_frozen_modules = 0; in _PyConfig_InitCompatConfig()
776 config->use_frozen_modules = 1; in _PyConfig_InitCompatConfig()
778 config->safe_path = 0; in _PyConfig_InitCompatConfig()
779 config->_is_python_build = 0; in _PyConfig_InitCompatConfig()
780 config->code_debug_ranges = 1; in _PyConfig_InitCompatConfig()
785 int _Py_global_config_int_max_str_digits = -1;
789 config_init_defaults(PyConfig *config) in config_init_defaults() argument
791 _PyConfig_InitCompatConfig(config); in config_init_defaults()
793 config->isolated = 0; in config_init_defaults()
794 config->use_environment = 1; in config_init_defaults()
795 config->site_import = 1; in config_init_defaults()
796 config->bytes_warning = 0; in config_init_defaults()
797 config->inspect = 0; in config_init_defaults()
798 config->interactive = 0; in config_init_defaults()
799 config->optimization_level = 0; in config_init_defaults()
800 config->parser_debug= 0; in config_init_defaults()
801 config->write_bytecode = 1; in config_init_defaults()
802 config->verbose = 0; in config_init_defaults()
803 config->quiet = 0; in config_init_defaults()
804 config->user_site_directory = 1; in config_init_defaults()
805 config->buffered_stdio = 1; in config_init_defaults()
806 config->pathconfig_warnings = 1; in config_init_defaults()
808 config->legacy_windows_stdio = 0; in config_init_defaults()
814 PyConfig_InitPythonConfig(PyConfig *config) in PyConfig_InitPythonConfig() argument
816 config_init_defaults(config); in PyConfig_InitPythonConfig()
818 config->_config_init = (int)_PyConfig_INIT_PYTHON; in PyConfig_InitPythonConfig()
819 config->configure_c_stdio = 1; in PyConfig_InitPythonConfig()
820 config->parse_argv = 1; in PyConfig_InitPythonConfig()
825 PyConfig_InitIsolatedConfig(PyConfig *config) in PyConfig_InitIsolatedConfig() argument
827 config_init_defaults(config); in PyConfig_InitIsolatedConfig()
829 config->_config_init = (int)_PyConfig_INIT_ISOLATED; in PyConfig_InitIsolatedConfig()
830 config->isolated = 1; in PyConfig_InitIsolatedConfig()
831 config->use_environment = 0; in PyConfig_InitIsolatedConfig()
832 config->user_site_directory = 0; in PyConfig_InitIsolatedConfig()
833 config->dev_mode = 0; in PyConfig_InitIsolatedConfig()
834 config->install_signal_handlers = 0; in PyConfig_InitIsolatedConfig()
835 config->use_hash_seed = 0; in PyConfig_InitIsolatedConfig()
836 config->faulthandler = 0; in PyConfig_InitIsolatedConfig()
837 config->tracemalloc = 0; in PyConfig_InitIsolatedConfig()
838 config->safe_path = 1; in PyConfig_InitIsolatedConfig()
839 config->pathconfig_warnings = 0; in PyConfig_InitIsolatedConfig()
841 config->legacy_windows_stdio = 0; in PyConfig_InitIsolatedConfig()
848 PyConfig_SetString(PyConfig *config, wchar_t **config_str, const wchar_t *str) in PyConfig_SetString() argument
850 PyStatus status = _Py_PreInitializeFromConfig(config, NULL); in PyConfig_SetString()
872 config_set_bytes_string(PyConfig *config, wchar_t **config_str, in config_set_bytes_string() argument
875 PyStatus status = _Py_PreInitializeFromConfig(config, NULL); in config_set_bytes_string()
885 if (len == (size_t)-2) { in config_set_bytes_string()
902 #define CONFIG_SET_BYTES_STR(config, config_str, str, NAME) \ argument
903 config_set_bytes_string(config, config_str, str, "cannot decode " NAME)
907 Pre-initialize Python if needed to ensure that encodings are properly
910 PyConfig_SetBytesString(PyConfig *config, wchar_t **config_str, in PyConfig_SetBytesString() argument
913 return CONFIG_SET_BYTES_STR(config, config_str, str, "string"); in PyConfig_SetBytesString()
918 _PyConfig_Copy(PyConfig *config, const PyConfig *config2) in _PyConfig_Copy() argument
922 PyConfig_Clear(config); in _PyConfig_Copy()
924 #define COPY_ATTR(ATTR) config->ATTR = config2->ATTR in _PyConfig_Copy()
927 status = PyConfig_SetString(config, &config->ATTR, config2->ATTR); \ in _PyConfig_Copy()
934 if (_PyWideStringList_Copy(&config->LIST, &config2->LIST) < 0) { \ in _PyConfig_Copy()
1018 _PyConfig_AsDict(const PyConfig *config) in _PyConfig_AsDict() argument
1038 SET_ITEM(#ATTR, PyLong_FromLong(config->ATTR)) in _PyConfig_AsDict()
1040 SET_ITEM(#ATTR, PyLong_FromUnsignedLong(config->ATTR)) in _PyConfig_AsDict()
1043 PyUnicode_FromWideChar(STR, -1) \ in _PyConfig_AsDict()
1046 SET_ITEM(#ATTR, FROM_WSTRING(config->ATTR)) in _PyConfig_AsDict()
1048 SET_ITEM(#LIST, _PyWideStringList_AsList(&config->LIST)) in _PyConfig_AsDict()
1136 PyErr_Format(PyExc_ValueError, "missing config key: %s", name); in config_dict_get()
1146 PyErr_Format(PyExc_ValueError, "invalid config value: %s", name); in config_dict_invalid_value()
1153 PyErr_Format(PyExc_TypeError, "invalid config type: %s", name); in config_dict_invalid_type()
1162 return -1; in config_dict_get_int()
1165 if (value == -1 && PyErr_Occurred()) { in config_dict_get_int()
1172 return -1; in config_dict_get_int()
1184 return -1; in config_dict_get_ulong()
1187 if (value == (unsigned long)-1 && PyErr_Occurred()) { in config_dict_get_ulong()
1194 return -1; in config_dict_get_ulong()
1202 config_dict_get_wstr(PyObject *dict, const char *name, PyConfig *config, in config_dict_get_wstr() argument
1207 return -1; in config_dict_get_wstr()
1211 status = PyConfig_SetString(config, result, NULL); in config_dict_get_wstr()
1215 return -1; in config_dict_get_wstr()
1220 return -1; in config_dict_get_wstr()
1222 status = PyConfig_SetString(config, result, wstr); in config_dict_get_wstr()
1227 return -1; in config_dict_get_wstr()
1234 config_dict_get_wstrlist(PyObject *dict, const char *name, PyConfig *config, in config_dict_get_wstrlist() argument
1239 return -1; in config_dict_get_wstrlist()
1244 return -1; in config_dict_get_wstrlist()
1280 return -1; in config_dict_get_wstrlist()
1285 _PyConfig_FromDict(PyConfig *config, PyObject *dict) in _PyConfig_FromDict() argument
1289 return -1; in _PyConfig_FromDict()
1295 return -1; \ in _PyConfig_FromDict()
1299 if (config_dict_get_int(dict, #KEY, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1300 return -1; \ in _PyConfig_FromDict()
1302 CHECK_VALUE(#KEY, config->KEY >= 0); \ in _PyConfig_FromDict()
1306 if (config_dict_get_wstr(dict, #KEY, config, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1307 return -1; \ in _PyConfig_FromDict()
1309 CHECK_VALUE(#KEY, config->KEY != NULL); \ in _PyConfig_FromDict()
1313 if (config_dict_get_wstr(dict, #KEY, config, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1314 return -1; \ in _PyConfig_FromDict()
1319 if (config_dict_get_wstrlist(dict, #KEY, config, &config->KEY) < 0) { \ in _PyConfig_FromDict()
1320 return -1; \ in _PyConfig_FromDict()
1326 config->_config_init == _PyConfig_INIT_COMPAT in _PyConfig_FromDict()
1327 || config->_config_init == _PyConfig_INIT_PYTHON in _PyConfig_FromDict()
1328 || config->_config_init == _PyConfig_INIT_ISOLATED); in _PyConfig_FromDict()
1334 if (config_dict_get_ulong(dict, "hash_seed", &config->hash_seed) < 0) { in _PyConfig_FromDict()
1335 return -1; in _PyConfig_FromDict()
1337 CHECK_VALUE("hash_seed", config->hash_seed <= MAX_HASH_SEED); in _PyConfig_FromDict()
1411 config_get_env(const PyConfig *config, const char *name) in config_get_env() argument
1413 return _Py_GetEnv(config->use_environment, name); in config_get_env()
1419 Return -1 on memory allocation failure. Return -2 on decoding error. */
1421 config_get_env_dup(PyConfig *config, in config_get_env_dup() argument
1427 assert(config->use_environment >= 0); in config_get_env_dup()
1429 if (!config->use_environment) { in config_get_env_dup()
1441 return PyConfig_SetString(config, dest, var); in config_get_env_dup()
1449 return config_set_bytes_string(config, dest, var, decode_err_msg); in config_get_env_dup()
1454 #define CONFIG_GET_ENV_DUP(CONFIG, DEST, WNAME, NAME) \ argument
1455 config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
1459 config_get_global_vars(PyConfig *config) in config_get_global_vars() argument
1461 if (config->_config_init != _PyConfig_INIT_COMPAT) { in config_get_global_vars()
1467 if (config->ATTR == -1) { \ in config_get_global_vars()
1468 config->ATTR = VALUE; \ in config_get_global_vars()
1471 if (config->ATTR == -1) { \ in config_get_global_vars()
1472 config->ATTR = !(VALUE); \ in config_get_global_vars()
1499 /* Set Py_xxx global configuration variables from 'config' configuration. */
1501 config_set_global_vars(const PyConfig *config) in config_set_global_vars() argument
1504 if (config->ATTR != -1) { \ in config_set_global_vars()
1505 VAR = config->ATTR; \ in config_set_global_vars()
1508 if (config->ATTR != -1) { \ in config_set_global_vars()
1509 VAR = !config->ATTR; \ in config_set_global_vars()
1531 /* Random or non-zero hash seed */ in config_set_global_vars()
1532 Py_HashRandomizationFlag = (config->use_hash_seed == 0 || in config_set_global_vars()
1533 config->hash_seed != 0); in config_set_global_vars()
1541 config_get_xoption(const PyConfig *config, wchar_t *name) in config_get_xoption() argument
1543 return _Py_get_xoption(&config->xoptions, name); in config_get_xoption()
1547 config_get_xoption_value(const PyConfig *config, wchar_t *name) in config_get_xoption_value() argument
1549 const wchar_t *xoption = config_get_xoption(config, name); in config_get_xoption_value()
1559 config_init_hash_seed(PyConfig *config) in config_init_hash_seed() argument
1564 const char *seed_text = config_get_env(config, "PYTHONHASHSEED"); in config_init_hash_seed()
1580 config->use_hash_seed = 1; in config_init_hash_seed()
1581 config->hash_seed = seed; in config_init_hash_seed()
1585 config->use_hash_seed = 0; in config_init_hash_seed()
1586 config->hash_seed = 0; in config_init_hash_seed()
1599 return -1; in config_wstr_to_int()
1602 return -1; in config_wstr_to_int()
1611 config_read_env_vars(PyConfig *config) in config_read_env_vars() argument
1614 int use_env = config->use_environment; in config_read_env_vars()
1617 _Py_get_env_flag(use_env, &config->parser_debug, "PYTHONDEBUG"); in config_read_env_vars()
1618 _Py_get_env_flag(use_env, &config->verbose, "PYTHONVERBOSE"); in config_read_env_vars()
1619 _Py_get_env_flag(use_env, &config->optimization_level, "PYTHONOPTIMIZE"); in config_read_env_vars()
1620 _Py_get_env_flag(use_env, &config->inspect, "PYTHONINSPECT"); in config_read_env_vars()
1625 config->write_bytecode = 0; in config_read_env_vars()
1631 config->user_site_directory = 0; in config_read_env_vars()
1637 config->buffered_stdio = 0; in config_read_env_vars()
1641 _Py_get_env_flag(use_env, &config->legacy_windows_stdio, in config_read_env_vars()
1645 if (config_get_env(config, "PYTHONDUMPREFS")) { in config_read_env_vars()
1646 config->dump_refs = 1; in config_read_env_vars()
1648 if (config_get_env(config, "PYTHONMALLOCSTATS")) { in config_read_env_vars()
1649 config->malloc_stats = 1; in config_read_env_vars()
1652 if (config->dump_refs_file == NULL) { in config_read_env_vars()
1653 status = CONFIG_GET_ENV_DUP(config, &config->dump_refs_file, in config_read_env_vars()
1660 if (config->pythonpath_env == NULL) { in config_read_env_vars()
1661 status = CONFIG_GET_ENV_DUP(config, &config->pythonpath_env, in config_read_env_vars()
1668 if(config->platlibdir == NULL) { in config_read_env_vars()
1669 status = CONFIG_GET_ENV_DUP(config, &config->platlibdir, in config_read_env_vars()
1676 if (config->use_hash_seed < 0) { in config_read_env_vars()
1677 status = config_init_hash_seed(config); in config_read_env_vars()
1683 if (config_get_env(config, "PYTHONSAFEPATH")) { in config_read_env_vars()
1684 config->safe_path = 1; in config_read_env_vars()
1692 config_init_tracemalloc(PyConfig *config) in config_init_tracemalloc() argument
1697 const char *env = config_get_env(config, "PYTHONTRACEMALLOC"); in config_init_tracemalloc()
1708 config->tracemalloc = nframe; in config_init_tracemalloc()
1711 const wchar_t *xoption = config_get_xoption(config, L"tracemalloc"); in config_init_tracemalloc()
1722 return _PyStatus_ERR("-X tracemalloc=NFRAME: " in config_init_tracemalloc()
1727 /* -X tracemalloc behaves as -X tracemalloc=1 */ in config_init_tracemalloc()
1730 config->tracemalloc = nframe; in config_init_tracemalloc()
1736 config_init_int_max_str_digits(PyConfig *config) in config_init_int_max_str_digits() argument
1740 const char *env = config_get_env(config, "PYTHONINTMAXSTRDIGITS"); in config_init_int_max_str_digits()
1757 const wchar_t *xoption = config_get_xoption(config, L"int_max_str_digits"); in config_init_int_max_str_digits()
1768 "-X int_max_str_digits: invalid limit; must be >= " in config_init_int_max_str_digits()
1780 config_init_pycache_prefix(PyConfig *config) in config_init_pycache_prefix() argument
1782 assert(config->pycache_prefix == NULL); in config_init_pycache_prefix()
1784 const wchar_t *xoption = config_get_xoption(config, L"pycache_prefix"); in config_init_pycache_prefix()
1788 config->pycache_prefix = _PyMem_RawWcsdup(sep + 1); in config_init_pycache_prefix()
1789 if (config->pycache_prefix == NULL) { in config_init_pycache_prefix()
1795 // if "-X pycache_prefix=" option is used in config_init_pycache_prefix()
1796 config->pycache_prefix = NULL; in config_init_pycache_prefix()
1801 return CONFIG_GET_ENV_DUP(config, &config->pycache_prefix, in config_init_pycache_prefix()
1808 config_read_complex_options(PyConfig *config) in config_read_complex_options() argument
1810 /* More complex options configured by env var and -X option */ in config_read_complex_options()
1811 if (config->faulthandler < 0) { in config_read_complex_options()
1812 if (config_get_env(config, "PYTHONFAULTHANDLER") in config_read_complex_options()
1813 || config_get_xoption(config, L"faulthandler")) { in config_read_complex_options()
1814 config->faulthandler = 1; in config_read_complex_options()
1817 if (config_get_env(config, "PYTHONPROFILEIMPORTTIME") in config_read_complex_options()
1818 || config_get_xoption(config, L"importtime")) { in config_read_complex_options()
1819 config->import_time = 1; in config_read_complex_options()
1822 if (config_get_env(config, "PYTHONNODEBUGRANGES") in config_read_complex_options()
1823 || config_get_xoption(config, L"no_debug_ranges")) { in config_read_complex_options()
1824 config->code_debug_ranges = 0; in config_read_complex_options()
1828 if (config->tracemalloc < 0) { in config_read_complex_options()
1829 status = config_init_tracemalloc(config); in config_read_complex_options()
1835 status = config_init_int_max_str_digits(config); in config_read_complex_options()
1841 if (config->pycache_prefix == NULL) { in config_read_complex_options()
1842 status = config_init_pycache_prefix(config); in config_read_complex_options()
1854 if (preconfig->utf8_mode) { in config_get_stdio_errors()
1855 /* UTF-8 Mode uses UTF-8/surrogateescape */ in config_get_stdio_errors()
1885 config_get_locale_encoding(PyConfig *config, const PyPreConfig *preconfig, in config_get_locale_encoding() argument
1889 if (preconfig->utf8_mode) { in config_get_locale_encoding()
1890 encoding = _PyMem_RawWcsdup(L"utf-8"); in config_get_locale_encoding()
1898 PyStatus status = PyConfig_SetString(config, locale_encoding, encoding); in config_get_locale_encoding()
1905 config_init_stdio_encoding(PyConfig *config, in config_init_stdio_encoding() argument
1912 if (config->stdio_encoding == NULL && _Py_StandardStreamEncoding != NULL) { in config_init_stdio_encoding()
1913 status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding, in config_init_stdio_encoding()
1921 if (config->stdio_errors == NULL && _Py_StandardStreamErrors != NULL) { in config_init_stdio_encoding()
1922 status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors, in config_init_stdio_encoding()
1931 if (config->stdio_encoding != NULL && config->stdio_errors != NULL) { in config_init_stdio_encoding()
1936 const char *opt = config_get_env(config, "PYTHONIOENCODING"); in config_init_stdio_encoding()
1954 if (config->stdio_encoding == NULL) { in config_init_stdio_encoding()
1955 status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding, in config_init_stdio_encoding()
1973 if (config->stdio_errors == NULL && errors != NULL) { in config_init_stdio_encoding()
1974 status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors, in config_init_stdio_encoding()
1987 if (config->stdio_encoding == NULL) { in config_init_stdio_encoding()
1988 status = config_get_locale_encoding(config, preconfig, in config_init_stdio_encoding()
1989 &config->stdio_encoding); in config_init_stdio_encoding()
1994 if (config->stdio_errors == NULL) { in config_init_stdio_encoding()
1998 status = PyConfig_SetString(config, &config->stdio_errors, errors); in config_init_stdio_encoding()
2010 config_get_fs_encoding(PyConfig *config, const PyPreConfig *preconfig, in config_get_fs_encoding() argument
2014 return PyConfig_SetString(config, fs_encoding, L"utf-8"); in config_get_fs_encoding()
2017 if (preconfig->legacy_windows_fs_encoding) { in config_get_fs_encoding()
2022 // Windows defaults to utf-8/surrogatepass (PEP 529) in config_get_fs_encoding()
2023 encoding = L"utf-8"; in config_get_fs_encoding()
2025 return PyConfig_SetString(config, fs_encoding, encoding); in config_get_fs_encoding()
2027 if (preconfig->utf8_mode) { in config_get_fs_encoding()
2028 return PyConfig_SetString(config, fs_encoding, L"utf-8"); in config_get_fs_encoding()
2032 return PyConfig_SetString(config, fs_encoding, L"ascii"); in config_get_fs_encoding()
2035 return config_get_locale_encoding(config, preconfig, fs_encoding); in config_get_fs_encoding()
2041 config_init_fs_encoding(PyConfig *config, const PyPreConfig *preconfig) in config_init_fs_encoding() argument
2045 if (config->filesystem_encoding == NULL) { in config_init_fs_encoding()
2046 status = config_get_fs_encoding(config, preconfig, in config_init_fs_encoding()
2047 &config->filesystem_encoding); in config_init_fs_encoding()
2053 if (config->filesystem_errors == NULL) { in config_init_fs_encoding()
2056 if (preconfig->legacy_windows_fs_encoding) { in config_init_fs_encoding()
2065 status = PyConfig_SetString(config, &config->filesystem_errors, errors); in config_init_fs_encoding()
2075 config_init_import(PyConfig *config, int compute_path_config) in config_init_import() argument
2079 status = _PyConfig_InitPathConfig(config, compute_path_config); in config_init_import()
2084 /* -X frozen_modules=[on|off] */ in config_init_import()
2085 const wchar_t *value = config_get_xoption_value(config, L"frozen_modules"); in config_init_import()
2089 config->use_frozen_modules = 1; in config_init_import()
2092 config->use_frozen_modules = 0; in config_init_import()
2095 // "-X frozen_modules" and "-X frozen_modules=" both imply "on". in config_init_import()
2096 config->use_frozen_modules = 1; in config_init_import()
2099 return PyStatus_Error("bad value for option -X frozen_modules " in config_init_import()
2103 assert(config->use_frozen_modules >= 0); in config_init_import()
2108 _PyConfig_InitImportConfig(PyConfig *config) in _PyConfig_InitImportConfig() argument
2110 return config_init_import(config, 1); in _PyConfig_InitImportConfig()
2115 config_read(PyConfig *config, int compute_path_config) in config_read() argument
2120 if (config->use_environment) { in config_read()
2121 status = config_read_env_vars(config); in config_read()
2127 /* -X options */ in config_read()
2128 if (config_get_xoption(config, L"showrefcount")) { in config_read()
2129 config->show_ref_count = 1; in config_read()
2132 status = config_read_complex_options(config); in config_read()
2137 if (config->_install_importlib) { in config_read()
2138 status = config_init_import(config, compute_path_config); in config_read()
2145 if (config->dev_mode) { in config_read()
2146 if (config->faulthandler < 0) { in config_read()
2147 config->faulthandler = 1; in config_read()
2150 if (config->faulthandler < 0) { in config_read()
2151 config->faulthandler = 0; in config_read()
2153 if (config->tracemalloc < 0) { in config_read()
2154 config->tracemalloc = 0; in config_read()
2156 if (config->use_hash_seed < 0) { in config_read()
2157 config->use_hash_seed = 0; in config_read()
2158 config->hash_seed = 0; in config_read()
2161 if (config->filesystem_encoding == NULL || config->filesystem_errors == NULL) { in config_read()
2162 status = config_init_fs_encoding(config, preconfig); in config_read()
2168 status = config_init_stdio_encoding(config, preconfig); in config_read()
2173 if (config->argv.length < 1) { in config_read()
2175 status = PyWideStringList_Append(&config->argv, L""); in config_read()
2181 if (config->check_hash_pycs_mode == NULL) { in config_read()
2182 status = PyConfig_SetString(config, &config->check_hash_pycs_mode, in config_read()
2189 if (config->configure_c_stdio < 0) { in config_read()
2190 config->configure_c_stdio = 1; in config_read()
2194 if (config->parse_argv == 1) { in config_read()
2195 config->parse_argv = 2; in config_read()
2203 config_init_stdio(const PyConfig *config) in config_init_stdio() argument
2212 if (!config->buffered_stdio) { in config_init_stdio()
2223 else if (config->interactive) { in config_init_stdio()
2225 /* Doesn't have to have line-buffered -- use unbuffered */ in config_init_stdio()
2226 /* Any set[v]buf(stdin, ...) screws up Tkinter :-( */ in config_init_stdio()
2234 /* Leave stderr alone - it should be unbuffered anyway. */ in config_init_stdio()
2241 - set Py_xxx global configuration variables
2242 - initialize C standard streams (stdin, stdout, stderr) */
2244 _PyConfig_Write(const PyConfig *config, _PyRuntimeState *runtime) in _PyConfig_Write() argument
2246 config_set_global_vars(config); in _PyConfig_Write()
2248 if (config->configure_c_stdio) { in _PyConfig_Write()
2249 config_init_stdio(config); in _PyConfig_Write()
2252 /* Write the new pre-configuration into _PyRuntime */ in _PyConfig_Write()
2253 PyPreConfig *preconfig = &runtime->preconfig; in _PyConfig_Write()
2254 preconfig->isolated = config->isolated; in _PyConfig_Write()
2255 preconfig->use_environment = config->use_environment; in _PyConfig_Write()
2256 preconfig->dev_mode = config->dev_mode; in _PyConfig_Write()
2258 if (_Py_SetArgcArgv(config->orig_argv.length, in _PyConfig_Write()
2259 config->orig_argv.items) < 0) in _PyConfig_Write()
2267 /* --- PyConfig command line parser -------------------------- */
2276 fprintf(f, "Try `python -h' for more information.\n"); in config_usage()
2307 config_parse_cmdline(PyConfig *config, PyWideStringList *warnoptions, in config_parse_cmdline() argument
2311 const PyWideStringList *argv = &config->argv; in config_parse_cmdline()
2313 const wchar_t* program = config->program_name; in config_parse_cmdline()
2314 if (!program && argv->length >= 1) { in config_parse_cmdline()
2315 program = argv->items[0]; in config_parse_cmdline()
2320 int longindex = -1; in config_parse_cmdline()
2321 int c = _PyOS_GetOpt(argv->length, argv->items, &longindex); in config_parse_cmdline()
2327 if (config->run_command == NULL) { in config_parse_cmdline()
2328 /* -c is the last option; following arguments in config_parse_cmdline()
2336 memcpy(command, _PyOS_optarg, (len - 2) * sizeof(wchar_t)); in config_parse_cmdline()
2337 command[len - 2] = '\n'; in config_parse_cmdline()
2338 command[len - 1] = 0; in config_parse_cmdline()
2339 config->run_command = command; in config_parse_cmdline()
2345 /* -m is the last option; following arguments in config_parse_cmdline()
2348 if (config->run_module == NULL) { in config_parse_cmdline()
2349 config->run_module = _PyMem_RawWcsdup(_PyOS_optarg); in config_parse_cmdline()
2350 if (config->run_module == NULL) { in config_parse_cmdline()
2360 // check-hash-based-pycs in config_parse_cmdline()
2365 status = PyConfig_SetString(config, &config->check_hash_pycs_mode, in config_parse_cmdline()
2371 fprintf(stderr, "--check-hash-based-pycs must be one of " in config_parse_cmdline()
2379 // help-all in config_parse_cmdline()
2384 // help-env in config_parse_cmdline()
2389 // help-xoptions in config_parse_cmdline()
2394 config->bytes_warning++; in config_parse_cmdline()
2398 config->parser_debug++; in config_parse_cmdline()
2402 config->inspect++; in config_parse_cmdline()
2403 config->interactive++; in config_parse_cmdline()
2415 config->optimization_level++; in config_parse_cmdline()
2419 config->safe_path = 1; in config_parse_cmdline()
2423 config->write_bytecode = 0; in config_parse_cmdline()
2427 config->user_site_directory = 0; in config_parse_cmdline()
2431 config->site_import = 0; in config_parse_cmdline()
2439 config->buffered_stdio = 0; in config_parse_cmdline()
2443 config->verbose++; in config_parse_cmdline()
2447 config->skip_source_first_line = 1; in config_parse_cmdline()
2467 config->quiet++; in config_parse_cmdline()
2471 config->use_hash_seed = 0; in config_parse_cmdline()
2489 if (config->run_command == NULL && config->run_module == NULL in config_parse_cmdline()
2490 && _PyOS_optind < argv->length in config_parse_cmdline()
2491 && wcscmp(argv->items[_PyOS_optind], L"-") != 0 in config_parse_cmdline()
2492 && config->run_filename == NULL) in config_parse_cmdline()
2494 config->run_filename = _PyMem_RawWcsdup(argv->items[_PyOS_optind]); in config_parse_cmdline()
2495 if (config->run_filename == NULL) { in config_parse_cmdline()
2500 if (config->run_command != NULL || config->run_module != NULL) { in config_parse_cmdline()
2502 _PyOS_optind--; in config_parse_cmdline()
2519 config_init_env_warnoptions(PyConfig *config, PyWideStringList *warnoptions) in config_init_env_warnoptions() argument
2524 status = CONFIG_GET_ENV_DUP(config, &env, in config_init_env_warnoptions()
2553 warnoptions_append(PyConfig *config, PyWideStringList *options, in warnoptions_append() argument
2556 /* config_init_warnoptions() add existing config warnoptions at the end: in warnoptions_append()
2560 if (_PyWideStringList_Find(&config->warnoptions, option)) { in warnoptions_append()
2573 warnoptions_extend(PyConfig *config, PyWideStringList *options, in warnoptions_extend() argument
2576 const Py_ssize_t len = options2->length; in warnoptions_extend()
2577 wchar_t *const *items = options2->items; in warnoptions_extend()
2580 PyStatus status = warnoptions_append(config, options, items[i]); in warnoptions_extend()
2590 config_init_warnoptions(PyConfig *config, in config_init_warnoptions() argument
2600 * - any implicit filters added by _warnings.c/warnings.py in config_init_warnoptions()
2601 * - PyConfig.dev_mode: "default" filter in config_init_warnoptions()
2602 * - PYTHONWARNINGS environment variable in config_init_warnoptions()
2603 * - '-W' command line options in config_init_warnoptions()
2604 * - PyConfig.bytes_warning ('-b' and '-bb' command line options): in config_init_warnoptions()
2606 * - early PySys_AddWarnOption() calls in config_init_warnoptions()
2607 * - PyConfig.warnoptions in config_init_warnoptions()
2615 if (config->dev_mode) { in config_init_warnoptions()
2616 status = warnoptions_append(config, &options, L"default"); in config_init_warnoptions()
2622 status = warnoptions_extend(config, &options, env_warnoptions); in config_init_warnoptions()
2627 status = warnoptions_extend(config, &options, cmdline_warnoptions); in config_init_warnoptions()
2636 if (config->bytes_warning) { in config_init_warnoptions()
2638 if (config->bytes_warning> 1) { in config_init_warnoptions()
2644 status = warnoptions_append(config, &options, filter); in config_init_warnoptions()
2650 status = warnoptions_extend(config, &options, sys_warnoptions); in config_init_warnoptions()
2656 status = _PyWideStringList_Extend(&options, &config->warnoptions); in config_init_warnoptions()
2661 _PyWideStringList_Clear(&config->warnoptions); in config_init_warnoptions()
2662 config->warnoptions = options; in config_init_warnoptions()
2672 config_update_argv(PyConfig *config, Py_ssize_t opt_index) in config_update_argv() argument
2674 const PyWideStringList *cmdline_argv = &config->argv; in config_update_argv()
2677 /* Copy argv to be able to modify it (to force -c/-m) */ in config_update_argv()
2678 if (cmdline_argv->length <= opt_index) { in config_update_argv()
2687 slice.length = cmdline_argv->length - opt_index; in config_update_argv()
2688 slice.items = &cmdline_argv->items[opt_index]; in config_update_argv()
2696 if (config->run_command != NULL) { in config_update_argv()
2697 /* Force sys.argv[0] = '-c' */ in config_update_argv()
2698 arg0 = L"-c"; in config_update_argv()
2700 else if (config->run_module != NULL) { in config_update_argv()
2701 /* Force sys.argv[0] = '-m'*/ in config_update_argv()
2702 arg0 = L"-m"; in config_update_argv()
2716 _PyWideStringList_Clear(&config->argv); in config_update_argv()
2717 config->argv = config_argv; in config_update_argv()
2723 core_read_precmdline(PyConfig *config, _PyPreCmdline *precmdline) in core_read_precmdline() argument
2727 if (config->parse_argv == 1) { in core_read_precmdline()
2728 if (_PyWideStringList_Copy(&precmdline->argv, &config->argv) < 0) { in core_read_precmdline()
2740 _PyPreConfig_GetConfig(&preconfig, config); in core_read_precmdline()
2747 status = _PyPreCmdline_SetConfig(precmdline, config); in core_read_precmdline()
2757 config_run_filename_abspath(PyConfig *config) in config_run_filename_abspath() argument
2759 if (!config->run_filename) { in config_run_filename_abspath()
2764 if (_Py_isabs(config->run_filename)) { in config_run_filename_abspath()
2771 if (_Py_abspath(config->run_filename, &abs_filename) < 0) { in config_run_filename_abspath()
2780 PyMem_RawFree(config->run_filename); in config_run_filename_abspath()
2781 config->run_filename = abs_filename; in config_run_filename_abspath()
2787 config_read_cmdline(PyConfig *config) in config_read_cmdline() argument
2794 if (config->parse_argv < 0) { in config_read_cmdline()
2795 config->parse_argv = 1; in config_read_cmdline()
2798 if (config->parse_argv == 1) { in config_read_cmdline()
2800 status = config_parse_cmdline(config, &cmdline_warnoptions, &opt_index); in config_read_cmdline()
2805 status = config_run_filename_abspath(config); in config_read_cmdline()
2810 status = config_update_argv(config, opt_index); in config_read_cmdline()
2816 status = config_run_filename_abspath(config); in config_read_cmdline()
2822 if (config->use_environment) { in config_read_cmdline()
2823 status = config_init_env_warnoptions(config, &env_warnoptions); in config_read_cmdline()
2835 status = config_init_warnoptions(config, in config_read_cmdline()
2854 _PyConfig_SetPyArgv(PyConfig *config, const _PyArgv *args) in _PyConfig_SetPyArgv() argument
2856 PyStatus status = _Py_PreInitializeFromConfig(config, args); in _PyConfig_SetPyArgv()
2861 return _PyArgv_AsWstrList(args, &config->argv); in _PyConfig_SetPyArgv()
2865 /* Set config.argv: decode argv using Py_DecodeLocale(). Pre-initialize Python
2868 PyConfig_SetBytesArgv(PyConfig *config, Py_ssize_t argc, char * const *argv) in PyConfig_SetBytesArgv() argument
2875 return _PyConfig_SetPyArgv(config, &args); in PyConfig_SetBytesArgv()
2880 PyConfig_SetArgv(PyConfig *config, Py_ssize_t argc, wchar_t * const *argv) in PyConfig_SetArgv() argument
2887 return _PyConfig_SetPyArgv(config, &args); in PyConfig_SetArgv()
2892 PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list, in PyConfig_SetWideStringList() argument
2895 PyStatus status = _Py_PreInitializeFromConfig(config, NULL); in PyConfig_SetWideStringList()
2914 The only side effects are to modify config and to call _Py_SetArgcArgv(). */
2916 _PyConfig_Read(PyConfig *config, int compute_path_config) in _PyConfig_Read() argument
2920 status = _Py_PreInitializeFromConfig(config, NULL); in _PyConfig_Read()
2925 config_get_global_vars(config); in _PyConfig_Read()
2927 if (config->orig_argv.length == 0 in _PyConfig_Read()
2928 && !(config->argv.length == 1 in _PyConfig_Read()
2929 && wcscmp(config->argv.items[0], L"") == 0)) in _PyConfig_Read()
2931 if (_PyWideStringList_Copy(&config->orig_argv, &config->argv) < 0) { in _PyConfig_Read()
2937 status = core_read_precmdline(config, &precmdline); in _PyConfig_Read()
2942 assert(config->isolated >= 0); in _PyConfig_Read()
2943 if (config->isolated) { in _PyConfig_Read()
2944 config->safe_path = 1; in _PyConfig_Read()
2945 config->use_environment = 0; in _PyConfig_Read()
2946 config->user_site_directory = 0; in _PyConfig_Read()
2949 status = config_read_cmdline(config); in _PyConfig_Read()
2955 status = _PySys_ReadPreinitXOptions(config); in _PyConfig_Read()
2960 status = config_read(config, compute_path_config); in _PyConfig_Read()
2965 assert(config_check_consistency(config)); in _PyConfig_Read()
2976 PyConfig_Read(PyConfig *config) in PyConfig_Read() argument
2978 return _PyConfig_Read(config, 0); in PyConfig_Read()
3003 /* pre config */ in _Py_GetConfigsAsDict()
3005 const PyPreConfig *pre_config = &interp->runtime->preconfig; in _Py_GetConfigsAsDict()
3015 /* core config */ in _Py_GetConfigsAsDict()
3016 const PyConfig *config = _PyInterpreterState_GetConfig(interp); in _Py_GetConfigsAsDict() local
3017 dict = _PyConfig_AsDict(config); in _Py_GetConfigsAsDict()
3021 if (PyDict_SetItemString(result, "config", dict) < 0) { in _Py_GetConfigsAsDict()
3079 init_dump_ascii_wstr(config->FIELD); \ in _Py_DumpPathConfig()
3083 const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp); in _Py_DumpPathConfig() local
3087 PySys_WriteStderr(" isolated = %i\n", config->isolated); in _Py_DumpPathConfig()
3088 PySys_WriteStderr(" environment = %i\n", config->use_environment); in _Py_DumpPathConfig()
3089 PySys_WriteStderr(" user site = %i\n", config->user_site_directory); in _Py_DumpPathConfig()
3090 PySys_WriteStderr(" safe_path = %i\n", config->safe_path); in _Py_DumpPathConfig()
3091 PySys_WriteStderr(" import site = %i\n", config->site_import); in _Py_DumpPathConfig()
3092 PySys_WriteStderr(" is in build tree = %i\n", config->_is_python_build); in _Py_DumpPathConfig()