Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 1 | #ifndef Py_PYCORECONFIG_H |
| 2 | #define Py_PYCORECONFIG_H |
Victor Stinner | f684d83 | 2019-03-01 03:44:13 +0100 | [diff] [blame] | 3 | #ifndef Py_LIMITED_API |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 4 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 5 | /* --- PyStatus ----------------------------------------------- */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 6 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 7 | typedef struct { |
Victor Stinner | db71975 | 2019-05-01 05:35:33 +0200 | [diff] [blame] | 8 | enum { |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 9 | _PyStatus_TYPE_OK=0, |
| 10 | _PyStatus_TYPE_ERROR=1, |
| 11 | _PyStatus_TYPE_EXIT=2 |
Victor Stinner | db71975 | 2019-05-01 05:35:33 +0200 | [diff] [blame] | 12 | } _type; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 13 | const char *func; |
Victor Stinner | db71975 | 2019-05-01 05:35:33 +0200 | [diff] [blame] | 14 | const char *err_msg; |
Victor Stinner | dfe8847 | 2019-03-01 12:14:41 +0100 | [diff] [blame] | 15 | int exitcode; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 16 | } PyStatus; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 17 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 18 | PyAPI_FUNC(PyStatus) PyStatus_Ok(void); |
| 19 | PyAPI_FUNC(PyStatus) PyStatus_Error(const char *err_msg); |
| 20 | PyAPI_FUNC(PyStatus) PyStatus_NoMemory(void); |
| 21 | PyAPI_FUNC(PyStatus) PyStatus_Exit(int exitcode); |
| 22 | PyAPI_FUNC(int) PyStatus_IsError(PyStatus err); |
| 23 | PyAPI_FUNC(int) PyStatus_IsExit(PyStatus err); |
| 24 | PyAPI_FUNC(int) PyStatus_Exception(PyStatus err); |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 25 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 26 | /* --- PyWideStringList ------------------------------------------------ */ |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 27 | |
| 28 | typedef struct { |
| 29 | /* If length is greater than zero, items must be non-NULL |
| 30 | and all items strings must be non-NULL */ |
| 31 | Py_ssize_t length; |
| 32 | wchar_t **items; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 33 | } PyWideStringList; |
| 34 | |
| 35 | PyAPI_FUNC(PyStatus) PyWideStringList_Append(PyWideStringList *list, |
| 36 | const wchar_t *item); |
Victor Stinner | 3842f29 | 2019-08-23 16:57:54 +0100 | [diff] [blame] | 37 | PyAPI_FUNC(PyStatus) PyWideStringList_Insert(PyWideStringList *list, |
| 38 | Py_ssize_t index, |
| 39 | const wchar_t *item); |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 40 | |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 41 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 42 | /* --- PyPreConfig ----------------------------------------------- */ |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 43 | |
Victor Stinner | cfb41e8 | 2020-11-04 16:15:54 +0100 | [diff] [blame] | 44 | typedef struct PyPreConfig { |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 45 | int _config_init; /* _PyConfigInitEnum value */ |
Victor Stinner | 373893c | 2019-05-02 14:46:29 -0400 | [diff] [blame] | 46 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 47 | /* Parse Py_PreInitializeFromBytesArgs() arguments? |
| 48 | See PyConfig.parse_argv */ |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 49 | int parse_argv; |
| 50 | |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 51 | /* If greater than 0, enable isolated mode: sys.path contains |
| 52 | neither the script's directory nor the user's site-packages directory. |
| 53 | |
| 54 | Set to 1 by the -I command line option. If set to -1 (default), inherit |
| 55 | Py_IsolatedFlag value. */ |
| 56 | int isolated; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 57 | |
| 58 | /* If greater than 0: use environment variables. |
| 59 | Set to 0 by -E command line option. If set to -1 (default), it is |
| 60 | set to !Py_IgnoreEnvironmentFlag. */ |
| 61 | int use_environment; |
Victor Stinner | 5a02e0d | 2019-03-05 12:32:09 +0100 | [diff] [blame] | 62 | |
Victor Stinner | bcfbbd7 | 2019-05-17 22:44:16 +0200 | [diff] [blame] | 63 | /* Set the LC_CTYPE locale to the user preferred locale? If equals to 0, |
| 64 | set coerce_c_locale and coerce_c_locale_warn to 0. */ |
| 65 | int configure_locale; |
| 66 | |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 67 | /* Coerce the LC_CTYPE locale if it's equal to "C"? (PEP 538) |
| 68 | |
| 69 | Set to 0 by PYTHONCOERCECLOCALE=0. Set to 1 by PYTHONCOERCECLOCALE=1. |
| 70 | Set to 2 if the user preferred LC_CTYPE locale is "C". |
Victor Stinner | f72346c | 2019-03-25 17:54:58 +0100 | [diff] [blame] | 71 | |
MandarJKulkarni | 33ce3f0 | 2019-05-29 04:25:05 +0530 | [diff] [blame] | 72 | If it is equal to 1, LC_CTYPE locale is read to decide if it should be |
Victor Stinner | f72346c | 2019-03-25 17:54:58 +0100 | [diff] [blame] | 73 | coerced or not (ex: PYTHONCOERCECLOCALE=1). Internally, it is set to 2 |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 74 | if the LC_CTYPE locale must be coerced. |
| 75 | |
MandarJKulkarni | 33ce3f0 | 2019-05-29 04:25:05 +0530 | [diff] [blame] | 76 | Disable by default (set to 0). Set it to -1 to let Python decide if it |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 77 | should be enabled or not. */ |
Victor Stinner | f72346c | 2019-03-25 17:54:58 +0100 | [diff] [blame] | 78 | int coerce_c_locale; |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 79 | |
| 80 | /* Emit a warning if the LC_CTYPE locale is coerced? |
| 81 | |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 82 | Set to 1 by PYTHONCOERCECLOCALE=warn. |
| 83 | |
MandarJKulkarni | 33ce3f0 | 2019-05-29 04:25:05 +0530 | [diff] [blame] | 84 | Disable by default (set to 0). Set it to -1 to let Python decide if it |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 85 | should be enabled or not. */ |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 86 | int coerce_c_locale_warn; |
Victor Stinner | 5a02e0d | 2019-03-05 12:32:09 +0100 | [diff] [blame] | 87 | |
| 88 | #ifdef MS_WINDOWS |
| 89 | /* If greater than 1, use the "mbcs" encoding instead of the UTF-8 |
| 90 | encoding for the filesystem encoding. |
| 91 | |
| 92 | Set to 1 if the PYTHONLEGACYWINDOWSFSENCODING environment variable is |
| 93 | set to a non-empty string. If set to -1 (default), inherit |
| 94 | Py_LegacyWindowsFSEncodingFlag value. |
| 95 | |
| 96 | See PEP 529 for more details. */ |
| 97 | int legacy_windows_fs_encoding; |
| 98 | #endif |
| 99 | |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 100 | /* Enable UTF-8 mode? (PEP 540) |
| 101 | |
| 102 | Disabled by default (equals to 0). |
| 103 | |
| 104 | Set to 1 by "-X utf8" and "-X utf8=1" command line options. |
| 105 | Set to 1 by PYTHONUTF8=1 environment variable. |
| 106 | |
| 107 | Set to 0 by "-X utf8=0" and PYTHONUTF8=0. |
| 108 | |
| 109 | If equals to -1, it is set to 1 if the LC_CTYPE locale is "C" or |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 110 | "POSIX", otherwise it is set to 0. Inherit Py_UTF8Mode value value. */ |
Victor Stinner | 5a02e0d | 2019-03-05 12:32:09 +0100 | [diff] [blame] | 111 | int utf8_mode; |
Victor Stinner | b35be4b | 2019-03-05 17:37:44 +0100 | [diff] [blame] | 112 | |
Victor Stinner | b9783d2 | 2020-01-24 10:22:18 +0100 | [diff] [blame] | 113 | /* If non-zero, enable the Python Development Mode. |
| 114 | |
| 115 | Set to 1 by the -X dev command line option. Set by the PYTHONDEVMODE |
| 116 | environment variable. */ |
| 117 | int dev_mode; |
Victor Stinner | b16b4e4 | 2019-05-17 15:20:52 +0200 | [diff] [blame] | 118 | |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 119 | /* Memory allocator: PYTHONMALLOC env var. |
| 120 | See PyMemAllocatorName for valid values. */ |
| 121 | int allocator; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 122 | } PyPreConfig; |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 123 | |
Victor Stinner | 3c30a76 | 2019-10-01 10:56:37 +0200 | [diff] [blame] | 124 | PyAPI_FUNC(void) PyPreConfig_InitPythonConfig(PyPreConfig *config); |
| 125 | PyAPI_FUNC(void) PyPreConfig_InitIsolatedConfig(PyPreConfig *config); |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 126 | |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 127 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 128 | /* --- PyConfig ---------------------------------------------- */ |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 129 | |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 130 | /* This structure is best documented in the Doc/c-api/init_config.rst file. */ |
Victor Stinner | cfb41e8 | 2020-11-04 16:15:54 +0100 | [diff] [blame] | 131 | typedef struct PyConfig { |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 132 | int _config_init; /* _PyConfigInitEnum value */ |
Victor Stinner | 373893c | 2019-05-02 14:46:29 -0400 | [diff] [blame] | 133 | |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 134 | int isolated; |
| 135 | int use_environment; |
| 136 | int dev_mode; |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 137 | int install_signal_handlers; |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 138 | int use_hash_seed; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 139 | unsigned long hash_seed; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 140 | int faulthandler; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 141 | int tracemalloc; |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 142 | int import_time; |
| 143 | int show_ref_count; |
| 144 | int dump_refs; |
| 145 | int malloc_stats; |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 146 | wchar_t *filesystem_encoding; |
| 147 | wchar_t *filesystem_errors; |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 148 | wchar_t *pycache_prefix; |
| 149 | int parse_argv; |
Victor Stinner | cfb41e8 | 2020-11-04 16:15:54 +0100 | [diff] [blame] | 150 | PyWideStringList orig_argv; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 151 | PyWideStringList argv; |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 152 | PyWideStringList xoptions; |
Victor Stinner | fb4ae15 | 2019-09-30 01:40:17 +0200 | [diff] [blame] | 153 | PyWideStringList warnoptions; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 154 | int site_import; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 155 | int bytes_warning; |
Inada Naoki | 4827483 | 2021-03-29 12:28:14 +0900 | [diff] [blame] | 156 | int warn_default_encoding; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 157 | int inspect; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 158 | int interactive; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 159 | int optimization_level; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 160 | int parser_debug; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 161 | int write_bytecode; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 162 | int verbose; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 163 | int quiet; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 164 | int user_site_directory; |
Victor Stinner | 54b43bb | 2019-05-16 18:30:15 +0200 | [diff] [blame] | 165 | int configure_c_stdio; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 166 | int buffered_stdio; |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 167 | wchar_t *stdio_encoding; |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 168 | wchar_t *stdio_errors; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 169 | #ifdef MS_WINDOWS |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 170 | int legacy_windows_stdio; |
| 171 | #endif |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 172 | wchar_t *check_hash_pycs_mode; |
| 173 | |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 174 | /* --- Path configuration inputs ------------ */ |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 175 | int pathconfig_warnings; |
Victor Stinner | cfb41e8 | 2020-11-04 16:15:54 +0100 | [diff] [blame] | 176 | wchar_t *program_name; |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 177 | wchar_t *pythonpath_env; |
| 178 | wchar_t *home; |
Victor Stinner | cfb41e8 | 2020-11-04 16:15:54 +0100 | [diff] [blame] | 179 | wchar_t *platlibdir; |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 180 | |
| 181 | /* --- Path configuration outputs ----------- */ |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 182 | int module_search_paths_set; |
| 183 | PyWideStringList module_search_paths; |
| 184 | wchar_t *executable; |
| 185 | wchar_t *base_executable; |
| 186 | wchar_t *prefix; |
| 187 | wchar_t *base_prefix; |
| 188 | wchar_t *exec_prefix; |
| 189 | wchar_t *base_exec_prefix; |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 190 | |
Victor Stinner | 62be763 | 2019-03-01 13:10:14 +0100 | [diff] [blame] | 191 | /* --- Parameter only used by Py_Main() ---------- */ |
Victor Stinner | 62be763 | 2019-03-01 13:10:14 +0100 | [diff] [blame] | 192 | int skip_source_first_line; |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 193 | wchar_t *run_command; |
| 194 | wchar_t *run_module; |
| 195 | wchar_t *run_filename; |
Victor Stinner | 62be763 | 2019-03-01 13:10:14 +0100 | [diff] [blame] | 196 | |
| 197 | /* --- Private fields ---------------------------- */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 198 | |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 199 | // Install importlib? If equals to 0, importlib is not initialized at all. |
| 200 | // Needed by freeze_importlib. |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 201 | int _install_importlib; |
| 202 | |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 203 | // If equal to 0, stop Python initialization before the "main" phase. |
Victor Stinner | 9ef5dca | 2019-05-16 17:38:16 +0200 | [diff] [blame] | 204 | int _init_main; |
Victor Stinner | 252346a | 2020-05-01 11:33:44 +0200 | [diff] [blame] | 205 | |
Victor Stinner | 4b9aad4 | 2020-11-02 16:49:54 +0100 | [diff] [blame] | 206 | // If non-zero, disallow threads, subprocesses, and fork. |
| 207 | // Default: 0. |
Victor Stinner | 252346a | 2020-05-01 11:33:44 +0200 | [diff] [blame] | 208 | int _isolated_interpreter; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 209 | } PyConfig; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 210 | |
Victor Stinner | 8462a49 | 2019-10-01 12:06:16 +0200 | [diff] [blame] | 211 | PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config); |
| 212 | PyAPI_FUNC(void) PyConfig_InitIsolatedConfig(PyConfig *config); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 213 | PyAPI_FUNC(void) PyConfig_Clear(PyConfig *); |
| 214 | PyAPI_FUNC(PyStatus) PyConfig_SetString( |
| 215 | PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 216 | wchar_t **config_str, |
| 217 | const wchar_t *str); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 218 | PyAPI_FUNC(PyStatus) PyConfig_SetBytesString( |
| 219 | PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 220 | wchar_t **config_str, |
| 221 | const char *str); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 222 | PyAPI_FUNC(PyStatus) PyConfig_Read(PyConfig *config); |
| 223 | PyAPI_FUNC(PyStatus) PyConfig_SetBytesArgv( |
| 224 | PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 225 | Py_ssize_t argc, |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 226 | char * const *argv); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 227 | PyAPI_FUNC(PyStatus) PyConfig_SetArgv(PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 228 | Py_ssize_t argc, |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 229 | wchar_t * const *argv); |
Victor Stinner | 36242fd | 2019-07-01 19:13:50 +0200 | [diff] [blame] | 230 | PyAPI_FUNC(PyStatus) PyConfig_SetWideStringList(PyConfig *config, |
| 231 | PyWideStringList *list, |
| 232 | Py_ssize_t length, wchar_t **items); |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 233 | |
Victor Stinner | e81f6e6 | 2020-06-08 18:12:59 +0200 | [diff] [blame] | 234 | |
| 235 | /* --- Helper functions --------------------------------------- */ |
| 236 | |
| 237 | /* Get the original command line arguments, before Python modified them. |
| 238 | |
Victor Stinner | dd8a93e | 2020-06-30 00:49:03 +0200 | [diff] [blame] | 239 | See also PyConfig.orig_argv. */ |
Victor Stinner | e81f6e6 | 2020-06-08 18:12:59 +0200 | [diff] [blame] | 240 | PyAPI_FUNC(void) Py_GetArgcArgv(int *argc, wchar_t ***argv); |
| 241 | |
Victor Stinner | f684d83 | 2019-03-01 03:44:13 +0100 | [diff] [blame] | 242 | #endif /* !Py_LIMITED_API */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 243 | #endif /* !Py_PYCORECONFIG_H */ |