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 | #ifdef __cplusplus |
| 5 | extern "C" { |
| 6 | #endif |
| 7 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 8 | /* --- PyStatus ----------------------------------------------- */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 9 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 10 | typedef struct { |
Victor Stinner | db71975 | 2019-05-01 05:35:33 +0200 | [diff] [blame] | 11 | enum { |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 12 | _PyStatus_TYPE_OK=0, |
| 13 | _PyStatus_TYPE_ERROR=1, |
| 14 | _PyStatus_TYPE_EXIT=2 |
Victor Stinner | db71975 | 2019-05-01 05:35:33 +0200 | [diff] [blame] | 15 | } _type; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 16 | const char *func; |
Victor Stinner | db71975 | 2019-05-01 05:35:33 +0200 | [diff] [blame] | 17 | const char *err_msg; |
Victor Stinner | dfe8847 | 2019-03-01 12:14:41 +0100 | [diff] [blame] | 18 | int exitcode; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 19 | } PyStatus; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 20 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 21 | PyAPI_FUNC(PyStatus) PyStatus_Ok(void); |
| 22 | PyAPI_FUNC(PyStatus) PyStatus_Error(const char *err_msg); |
| 23 | PyAPI_FUNC(PyStatus) PyStatus_NoMemory(void); |
| 24 | PyAPI_FUNC(PyStatus) PyStatus_Exit(int exitcode); |
| 25 | PyAPI_FUNC(int) PyStatus_IsError(PyStatus err); |
| 26 | PyAPI_FUNC(int) PyStatus_IsExit(PyStatus err); |
| 27 | PyAPI_FUNC(int) PyStatus_Exception(PyStatus err); |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 28 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 29 | /* --- PyWideStringList ------------------------------------------------ */ |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 30 | |
| 31 | typedef struct { |
| 32 | /* If length is greater than zero, items must be non-NULL |
| 33 | and all items strings must be non-NULL */ |
| 34 | Py_ssize_t length; |
| 35 | wchar_t **items; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 36 | } PyWideStringList; |
| 37 | |
| 38 | PyAPI_FUNC(PyStatus) PyWideStringList_Append(PyWideStringList *list, |
| 39 | const wchar_t *item); |
Victor Stinner | 3842f29 | 2019-08-23 16:57:54 +0100 | [diff] [blame] | 40 | PyAPI_FUNC(PyStatus) PyWideStringList_Insert(PyWideStringList *list, |
| 41 | Py_ssize_t index, |
| 42 | const wchar_t *item); |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 43 | |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 44 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 45 | /* --- PyPreConfig ----------------------------------------------- */ |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 46 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 47 | typedef struct { |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 48 | int _config_init; /* _PyConfigInitEnum value */ |
Victor Stinner | 373893c | 2019-05-02 14:46:29 -0400 | [diff] [blame] | 49 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 50 | /* Parse Py_PreInitializeFromBytesArgs() arguments? |
| 51 | See PyConfig.parse_argv */ |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 52 | int parse_argv; |
| 53 | |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 54 | /* If greater than 0, enable isolated mode: sys.path contains |
| 55 | neither the script's directory nor the user's site-packages directory. |
| 56 | |
| 57 | Set to 1 by the -I command line option. If set to -1 (default), inherit |
| 58 | Py_IsolatedFlag value. */ |
| 59 | int isolated; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 60 | |
| 61 | /* If greater than 0: use environment variables. |
| 62 | Set to 0 by -E command line option. If set to -1 (default), it is |
| 63 | set to !Py_IgnoreEnvironmentFlag. */ |
| 64 | int use_environment; |
Victor Stinner | 5a02e0d | 2019-03-05 12:32:09 +0100 | [diff] [blame] | 65 | |
Victor Stinner | bcfbbd7 | 2019-05-17 22:44:16 +0200 | [diff] [blame] | 66 | /* Set the LC_CTYPE locale to the user preferred locale? If equals to 0, |
| 67 | set coerce_c_locale and coerce_c_locale_warn to 0. */ |
| 68 | int configure_locale; |
| 69 | |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 70 | /* Coerce the LC_CTYPE locale if it's equal to "C"? (PEP 538) |
| 71 | |
| 72 | Set to 0 by PYTHONCOERCECLOCALE=0. Set to 1 by PYTHONCOERCECLOCALE=1. |
| 73 | Set to 2 if the user preferred LC_CTYPE locale is "C". |
Victor Stinner | f72346c | 2019-03-25 17:54:58 +0100 | [diff] [blame] | 74 | |
MandarJKulkarni | 33ce3f0 | 2019-05-29 04:25:05 +0530 | [diff] [blame] | 75 | 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] | 76 | coerced or not (ex: PYTHONCOERCECLOCALE=1). Internally, it is set to 2 |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 77 | if the LC_CTYPE locale must be coerced. |
| 78 | |
MandarJKulkarni | 33ce3f0 | 2019-05-29 04:25:05 +0530 | [diff] [blame] | 79 | 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] | 80 | should be enabled or not. */ |
Victor Stinner | f72346c | 2019-03-25 17:54:58 +0100 | [diff] [blame] | 81 | int coerce_c_locale; |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 82 | |
| 83 | /* Emit a warning if the LC_CTYPE locale is coerced? |
| 84 | |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 85 | Set to 1 by PYTHONCOERCECLOCALE=warn. |
| 86 | |
MandarJKulkarni | 33ce3f0 | 2019-05-29 04:25:05 +0530 | [diff] [blame] | 87 | 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] | 88 | should be enabled or not. */ |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 89 | int coerce_c_locale_warn; |
Victor Stinner | 5a02e0d | 2019-03-05 12:32:09 +0100 | [diff] [blame] | 90 | |
| 91 | #ifdef MS_WINDOWS |
| 92 | /* If greater than 1, use the "mbcs" encoding instead of the UTF-8 |
| 93 | encoding for the filesystem encoding. |
| 94 | |
| 95 | Set to 1 if the PYTHONLEGACYWINDOWSFSENCODING environment variable is |
| 96 | set to a non-empty string. If set to -1 (default), inherit |
| 97 | Py_LegacyWindowsFSEncodingFlag value. |
| 98 | |
| 99 | See PEP 529 for more details. */ |
| 100 | int legacy_windows_fs_encoding; |
| 101 | #endif |
| 102 | |
Victor Stinner | d929f18 | 2019-03-27 18:28:46 +0100 | [diff] [blame] | 103 | /* Enable UTF-8 mode? (PEP 540) |
| 104 | |
| 105 | Disabled by default (equals to 0). |
| 106 | |
| 107 | Set to 1 by "-X utf8" and "-X utf8=1" command line options. |
| 108 | Set to 1 by PYTHONUTF8=1 environment variable. |
| 109 | |
| 110 | Set to 0 by "-X utf8=0" and PYTHONUTF8=0. |
| 111 | |
| 112 | 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] | 113 | "POSIX", otherwise it is set to 0. Inherit Py_UTF8Mode value value. */ |
Victor Stinner | 5a02e0d | 2019-03-05 12:32:09 +0100 | [diff] [blame] | 114 | int utf8_mode; |
Victor Stinner | b35be4b | 2019-03-05 17:37:44 +0100 | [diff] [blame] | 115 | |
Victor Stinner | b9783d2 | 2020-01-24 10:22:18 +0100 | [diff] [blame] | 116 | /* If non-zero, enable the Python Development Mode. |
| 117 | |
| 118 | Set to 1 by the -X dev command line option. Set by the PYTHONDEVMODE |
| 119 | environment variable. */ |
| 120 | int dev_mode; |
Victor Stinner | b16b4e4 | 2019-05-17 15:20:52 +0200 | [diff] [blame] | 121 | |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 122 | /* Memory allocator: PYTHONMALLOC env var. |
| 123 | See PyMemAllocatorName for valid values. */ |
| 124 | int allocator; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 125 | } PyPreConfig; |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 126 | |
Victor Stinner | 3c30a76 | 2019-10-01 10:56:37 +0200 | [diff] [blame] | 127 | PyAPI_FUNC(void) PyPreConfig_InitPythonConfig(PyPreConfig *config); |
| 128 | PyAPI_FUNC(void) PyPreConfig_InitIsolatedConfig(PyPreConfig *config); |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 129 | |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 130 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 131 | /* --- PyConfig ---------------------------------------------- */ |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 132 | |
| 133 | typedef struct { |
Victor Stinner | 022be02 | 2019-05-22 23:58:50 +0200 | [diff] [blame] | 134 | int _config_init; /* _PyConfigInitEnum value */ |
Victor Stinner | 373893c | 2019-05-02 14:46:29 -0400 | [diff] [blame] | 135 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 136 | int isolated; /* Isolated mode? see PyPreConfig.isolated */ |
| 137 | int use_environment; /* Use environment variables? see PyPreConfig.use_environment */ |
Victor Stinner | b9783d2 | 2020-01-24 10:22:18 +0100 | [diff] [blame] | 138 | int dev_mode; /* Python Development Mode? See PyPreConfig.dev_mode */ |
Victor Stinner | cad1f74 | 2019-03-05 02:01:27 +0100 | [diff] [blame] | 139 | |
| 140 | /* Install signal handlers? Yes by default. */ |
| 141 | int install_signal_handlers; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 142 | |
| 143 | int use_hash_seed; /* PYTHONHASHSEED=x */ |
| 144 | unsigned long hash_seed; |
| 145 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 146 | /* Enable faulthandler? |
| 147 | Set to 1 by -X faulthandler and PYTHONFAULTHANDLER. -1 means unset. */ |
| 148 | int faulthandler; |
| 149 | |
Pablo Galindo | c5fc156 | 2020-04-22 23:29:27 +0100 | [diff] [blame] | 150 | /* Enable PEG parser? |
| 151 | 1 by default, set to 0 by -X oldparser and PYTHONOLDPARSER */ |
Victor Stinner | 1def775 | 2020-04-23 03:03:24 +0200 | [diff] [blame] | 152 | int _use_peg_parser; |
Pablo Galindo | c5fc156 | 2020-04-22 23:29:27 +0100 | [diff] [blame] | 153 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 154 | /* Enable tracemalloc? |
| 155 | Set by -X tracemalloc=N and PYTHONTRACEMALLOC. -1 means unset */ |
| 156 | int tracemalloc; |
| 157 | |
| 158 | int import_time; /* PYTHONPROFILEIMPORTTIME, -X importtime */ |
| 159 | int show_ref_count; /* -X showrefcount */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 160 | int dump_refs; /* PYTHONDUMPREFS */ |
| 161 | int malloc_stats; /* PYTHONMALLOCSTATS */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 162 | |
Victor Stinner | de42755 | 2018-08-29 23:26:55 +0200 | [diff] [blame] | 163 | /* Python filesystem encoding and error handler: |
Victor Stinner | b2457ef | 2018-08-29 13:25:36 +0200 | [diff] [blame] | 164 | sys.getfilesystemencoding() and sys.getfilesystemencodeerrors(). |
| 165 | |
Victor Stinner | de42755 | 2018-08-29 23:26:55 +0200 | [diff] [blame] | 166 | Default encoding and error handler: |
| 167 | |
| 168 | * if Py_SetStandardStreamEncoding() has been called: they have the |
| 169 | highest priority; |
| 170 | * PYTHONIOENCODING environment variable; |
| 171 | * The UTF-8 Mode uses UTF-8/surrogateescape; |
Victor Stinner | 905f1ac | 2018-10-30 12:58:10 +0100 | [diff] [blame] | 172 | * If Python forces the usage of the ASCII encoding (ex: C locale |
| 173 | or POSIX locale on FreeBSD or HP-UX), use ASCII/surrogateescape; |
pxinwr | f4b0a1c | 2019-03-04 17:02:06 +0800 | [diff] [blame] | 174 | * locale encoding: ANSI code page on Windows, UTF-8 on Android and |
| 175 | VxWorks, LC_CTYPE locale encoding on other platforms; |
Victor Stinner | de42755 | 2018-08-29 23:26:55 +0200 | [diff] [blame] | 176 | * On Windows, "surrogateescape" error handler; |
| 177 | * "surrogateescape" error handler if the LC_CTYPE locale is "C" or "POSIX"; |
| 178 | * "surrogateescape" error handler if the LC_CTYPE locale has been coerced |
| 179 | (PEP 538); |
| 180 | * "strict" error handler. |
| 181 | |
| 182 | Supported error handlers: "strict", "surrogateescape" and |
| 183 | "surrogatepass". The surrogatepass error handler is only supported |
| 184 | if Py_DecodeLocale() and Py_EncodeLocale() use directly the UTF-8 codec; |
| 185 | it's only used on Windows. |
| 186 | |
| 187 | initfsencoding() updates the encoding to the Python codec name. |
| 188 | For example, "ANSI_X3.4-1968" is replaced with "ascii". |
| 189 | |
| 190 | On Windows, sys._enablelegacywindowsfsencoding() sets the |
| 191 | encoding/errors to mbcs/replace at runtime. |
| 192 | |
Victor Stinner | b2457ef | 2018-08-29 13:25:36 +0200 | [diff] [blame] | 193 | |
| 194 | See Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors. |
| 195 | */ |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 196 | wchar_t *filesystem_encoding; |
| 197 | wchar_t *filesystem_errors; |
Victor Stinner | b2457ef | 2018-08-29 13:25:36 +0200 | [diff] [blame] | 198 | |
Victor Stinner | 74f6568 | 2019-03-15 15:08:05 +0100 | [diff] [blame] | 199 | wchar_t *pycache_prefix; /* PYTHONPYCACHEPREFIX, -X pycache_prefix=PATH */ |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 200 | int parse_argv; /* Parse argv command line arguments? */ |
| 201 | |
| 202 | /* Command line arguments (sys.argv). |
| 203 | |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 204 | Set parse_argv to 1 to parse argv as Python command line arguments |
| 205 | and then strip Python arguments from argv. |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 206 | |
| 207 | If argv is empty, an empty string is added to ensure that sys.argv |
| 208 | always exists and is never empty. */ |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 209 | PyWideStringList argv; |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 210 | |
Victor Stinner | fed02e1 | 2019-05-17 11:12:09 +0200 | [diff] [blame] | 211 | /* Program name: |
| 212 | |
| 213 | - If Py_SetProgramName() was called, use its value. |
| 214 | - On macOS, use PYTHONEXECUTABLE environment variable if set. |
| 215 | - If WITH_NEXT_FRAMEWORK macro is defined, use __PYVENV_LAUNCHER__ |
| 216 | environment variable is set. |
| 217 | - Use argv[0] if available and non-empty. |
| 218 | - Use "python" on Windows, or "python3 on other platforms. */ |
| 219 | wchar_t *program_name; |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 220 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 221 | PyWideStringList xoptions; /* Command line -X options */ |
Victor Stinner | fb4ae15 | 2019-09-30 01:40:17 +0200 | [diff] [blame] | 222 | |
| 223 | /* Warnings options: lowest to highest priority. warnings.filters |
| 224 | is built in the reverse order (highest to lowest priority). */ |
| 225 | PyWideStringList warnoptions; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 226 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 227 | /* If equal to zero, disable the import of the module site and the |
| 228 | site-dependent manipulations of sys.path that it entails. Also disable |
| 229 | these manipulations if site is explicitly imported later (call |
| 230 | site.main() if you want them to be triggered). |
| 231 | |
| 232 | Set to 0 by the -S command line option. If set to -1 (default), it is |
| 233 | set to !Py_NoSiteFlag. */ |
| 234 | int site_import; |
| 235 | |
| 236 | /* Bytes warnings: |
| 237 | |
| 238 | * If equal to 1, issue a warning when comparing bytes or bytearray with |
| 239 | str or bytes with int. |
| 240 | * If equal or greater to 2, issue an error. |
| 241 | |
| 242 | Incremented by the -b command line option. If set to -1 (default), inherit |
| 243 | Py_BytesWarningFlag value. */ |
| 244 | int bytes_warning; |
| 245 | |
| 246 | /* If greater than 0, enable inspect: when a script is passed as first |
| 247 | argument or the -c option is used, enter interactive mode after |
| 248 | executing the script or the command, even when sys.stdin does not appear |
| 249 | to be a terminal. |
| 250 | |
| 251 | Incremented by the -i command line option. Set to 1 if the PYTHONINSPECT |
| 252 | environment variable is non-empty. If set to -1 (default), inherit |
| 253 | Py_InspectFlag value. */ |
| 254 | int inspect; |
| 255 | |
| 256 | /* If greater than 0: enable the interactive mode (REPL). |
| 257 | |
| 258 | Incremented by the -i command line option. If set to -1 (default), |
| 259 | inherit Py_InteractiveFlag value. */ |
| 260 | int interactive; |
| 261 | |
| 262 | /* Optimization level. |
| 263 | |
| 264 | Incremented by the -O command line option. Set by the PYTHONOPTIMIZE |
| 265 | environment variable. If set to -1 (default), inherit Py_OptimizeFlag |
| 266 | value. */ |
| 267 | int optimization_level; |
| 268 | |
| 269 | /* If greater than 0, enable the debug mode: turn on parser debugging |
| 270 | output (for expert only, depending on compilation options). |
| 271 | |
| 272 | Incremented by the -d command line option. Set by the PYTHONDEBUG |
| 273 | environment variable. If set to -1 (default), inherit Py_DebugFlag |
| 274 | value. */ |
| 275 | int parser_debug; |
| 276 | |
| 277 | /* If equal to 0, Python won't try to write ``.pyc`` files on the |
| 278 | import of source modules. |
| 279 | |
| 280 | Set to 0 by the -B command line option and the PYTHONDONTWRITEBYTECODE |
| 281 | environment variable. If set to -1 (default), it is set to |
| 282 | !Py_DontWriteBytecodeFlag. */ |
| 283 | int write_bytecode; |
| 284 | |
| 285 | /* If greater than 0, enable the verbose mode: print a message each time a |
| 286 | module is initialized, showing the place (filename or built-in module) |
| 287 | from which it is loaded. |
| 288 | |
| 289 | If greater or equal to 2, print a message for each file that is checked |
| 290 | for when searching for a module. Also provides information on module |
| 291 | cleanup at exit. |
| 292 | |
| 293 | Incremented by the -v option. Set by the PYTHONVERBOSE environment |
| 294 | variable. If set to -1 (default), inherit Py_VerboseFlag value. */ |
| 295 | int verbose; |
| 296 | |
| 297 | /* If greater than 0, enable the quiet mode: Don't display the copyright |
| 298 | and version messages even in interactive mode. |
| 299 | |
| 300 | Incremented by the -q option. If set to -1 (default), inherit |
| 301 | Py_QuietFlag value. */ |
| 302 | int quiet; |
| 303 | |
| 304 | /* If greater than 0, don't add the user site-packages directory to |
| 305 | sys.path. |
| 306 | |
| 307 | Set to 0 by the -s and -I command line options , and the PYTHONNOUSERSITE |
| 308 | environment variable. If set to -1 (default), it is set to |
| 309 | !Py_NoUserSiteDirectory. */ |
| 310 | int user_site_directory; |
| 311 | |
Victor Stinner | 54b43bb | 2019-05-16 18:30:15 +0200 | [diff] [blame] | 312 | /* If non-zero, configure C standard steams (stdio, stdout, |
| 313 | stderr): |
| 314 | |
| 315 | - Set O_BINARY mode on Windows. |
| 316 | - If buffered_stdio is equal to zero, make streams unbuffered. |
| 317 | Otherwise, enable streams buffering if interactive is non-zero. */ |
| 318 | int configure_c_stdio; |
| 319 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 320 | /* If equal to 0, enable unbuffered mode: force the stdout and stderr |
| 321 | streams to be unbuffered. |
| 322 | |
| 323 | Set to 0 by the -u option. Set by the PYTHONUNBUFFERED environment |
| 324 | variable. |
| 325 | If set to -1 (default), it is set to !Py_UnbufferedStdioFlag. */ |
| 326 | int buffered_stdio; |
| 327 | |
Victor Stinner | dfe0dc7 | 2018-08-29 11:47:29 +0200 | [diff] [blame] | 328 | /* Encoding of sys.stdin, sys.stdout and sys.stderr. |
| 329 | Value set from PYTHONIOENCODING environment variable and |
| 330 | Py_SetStandardStreamEncoding() function. |
| 331 | See also 'stdio_errors' attribute. */ |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 332 | wchar_t *stdio_encoding; |
Victor Stinner | dfe0dc7 | 2018-08-29 11:47:29 +0200 | [diff] [blame] | 333 | |
| 334 | /* Error handler of sys.stdin and sys.stdout. |
| 335 | Value set from PYTHONIOENCODING environment variable and |
| 336 | Py_SetStandardStreamEncoding() function. |
| 337 | See also 'stdio_encoding' attribute. */ |
Victor Stinner | 709d23d | 2019-05-02 14:56:30 -0400 | [diff] [blame] | 338 | wchar_t *stdio_errors; |
Victor Stinner | dfe0dc7 | 2018-08-29 11:47:29 +0200 | [diff] [blame] | 339 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 340 | #ifdef MS_WINDOWS |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 341 | /* If greater than zero, use io.FileIO instead of WindowsConsoleIO for sys |
| 342 | standard streams. |
| 343 | |
| 344 | Set to 1 if the PYTHONLEGACYWINDOWSSTDIO environment variable is set to |
| 345 | a non-empty string. If set to -1 (default), inherit |
| 346 | Py_LegacyWindowsStdioFlag value. |
| 347 | |
| 348 | See PEP 528 for more details. */ |
| 349 | int legacy_windows_stdio; |
| 350 | #endif |
| 351 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 352 | /* Value of the --check-hash-based-pycs command line option: |
| 353 | |
| 354 | - "default" means the 'check_source' flag in hash-based pycs |
| 355 | determines invalidation |
| 356 | - "always" causes the interpreter to hash the source file for |
| 357 | invalidation regardless of value of 'check_source' bit |
| 358 | - "never" causes the interpreter to always assume hash-based pycs are |
| 359 | valid |
| 360 | |
| 361 | The default value is "default". |
| 362 | |
| 363 | See PEP 552 "Deterministic pycs" for more details. */ |
| 364 | wchar_t *check_hash_pycs_mode; |
| 365 | |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 366 | /* --- Path configuration inputs ------------ */ |
| 367 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 368 | /* If greater than 0, suppress _PyPathConfig_Calculate() warnings on Unix. |
| 369 | The parameter has no effect on Windows. |
| 370 | |
| 371 | If set to -1 (default), inherit !Py_FrozenFlag value. */ |
| 372 | int pathconfig_warnings; |
| 373 | |
| 374 | wchar_t *pythonpath_env; /* PYTHONPATH environment variable */ |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 375 | wchar_t *home; /* PYTHONHOME environment variable, |
| 376 | see also Py_SetPythonHome(). */ |
| 377 | |
| 378 | /* --- Path configuration outputs ----------- */ |
| 379 | |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 380 | int module_search_paths_set; /* If non-zero, use module_search_paths */ |
| 381 | PyWideStringList module_search_paths; /* sys.path paths. Computed if |
| 382 | module_search_paths_set is equal |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 383 | to zero. */ |
| 384 | |
Steve Dower | 9048c49 | 2019-06-29 10:34:11 -0700 | [diff] [blame] | 385 | wchar_t *executable; /* sys.executable */ |
| 386 | wchar_t *base_executable; /* sys._base_executable */ |
| 387 | wchar_t *prefix; /* sys.prefix */ |
| 388 | wchar_t *base_prefix; /* sys.base_prefix */ |
| 389 | wchar_t *exec_prefix; /* sys.exec_prefix */ |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 390 | wchar_t *base_exec_prefix; /* sys.base_exec_prefix */ |
Victor Stinner | 8175064 | 2020-06-08 19:36:13 +0200 | [diff] [blame] | 391 | wchar_t *platlibdir; /* sys.platlibdir */ |
Victor Stinner | ae239f6 | 2019-05-16 17:02:56 +0200 | [diff] [blame] | 392 | |
Victor Stinner | 62be763 | 2019-03-01 13:10:14 +0100 | [diff] [blame] | 393 | /* --- Parameter only used by Py_Main() ---------- */ |
| 394 | |
| 395 | /* Skip the first line of the source ('run_filename' parameter), allowing use of non-Unix forms of |
| 396 | "#!cmd". This is intended for a DOS specific hack only. |
| 397 | |
| 398 | Set by the -x command line option. */ |
| 399 | int skip_source_first_line; |
| 400 | |
| 401 | wchar_t *run_command; /* -c command line argument */ |
| 402 | wchar_t *run_module; /* -m command line argument */ |
| 403 | wchar_t *run_filename; /* Trailing command line argument without -c or -m */ |
| 404 | |
| 405 | /* --- Private fields ---------------------------- */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 406 | |
| 407 | /* Install importlib? If set to 0, importlib is not initialized at all. |
| 408 | Needed by freeze_importlib. */ |
| 409 | int _install_importlib; |
| 410 | |
Victor Stinner | 9ef5dca | 2019-05-16 17:38:16 +0200 | [diff] [blame] | 411 | /* If equal to 0, stop Python initialization before the "main" phase */ |
| 412 | int _init_main; |
Victor Stinner | 252346a | 2020-05-01 11:33:44 +0200 | [diff] [blame] | 413 | |
| 414 | /* If non-zero, disallow threads, subprocesses, and fork. |
| 415 | Default: 0. */ |
| 416 | int _isolated_interpreter; |
Victor Stinner | dedaac0 | 2020-06-08 18:44:50 +0200 | [diff] [blame] | 417 | |
| 418 | /* Original command line arguments. If _orig_argv is empty and _argv is |
| 419 | not equal to [''], PyConfig_Read() copies the configuration 'argv' list |
| 420 | into '_orig_argv' list before modifying 'argv' list (if parse_argv |
| 421 | is non-zero). |
| 422 | |
| 423 | _PyConfig_Write() initializes Py_GetArgcArgv() to this list. */ |
| 424 | PyWideStringList _orig_argv; |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 425 | } PyConfig; |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 426 | |
Victor Stinner | 8462a49 | 2019-10-01 12:06:16 +0200 | [diff] [blame] | 427 | PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config); |
| 428 | PyAPI_FUNC(void) PyConfig_InitIsolatedConfig(PyConfig *config); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 429 | PyAPI_FUNC(void) PyConfig_Clear(PyConfig *); |
| 430 | PyAPI_FUNC(PyStatus) PyConfig_SetString( |
| 431 | PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 432 | wchar_t **config_str, |
| 433 | const wchar_t *str); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 434 | PyAPI_FUNC(PyStatus) PyConfig_SetBytesString( |
| 435 | PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 436 | wchar_t **config_str, |
| 437 | const char *str); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 438 | PyAPI_FUNC(PyStatus) PyConfig_Read(PyConfig *config); |
| 439 | PyAPI_FUNC(PyStatus) PyConfig_SetBytesArgv( |
| 440 | PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 441 | Py_ssize_t argc, |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 442 | char * const *argv); |
Victor Stinner | 331a6a5 | 2019-05-27 16:39:22 +0200 | [diff] [blame] | 443 | PyAPI_FUNC(PyStatus) PyConfig_SetArgv(PyConfig *config, |
Victor Stinner | bab0db6 | 2019-05-18 03:21:27 +0200 | [diff] [blame] | 444 | Py_ssize_t argc, |
Victor Stinner | 6d1c467 | 2019-05-20 11:02:00 +0200 | [diff] [blame] | 445 | wchar_t * const *argv); |
Victor Stinner | 36242fd | 2019-07-01 19:13:50 +0200 | [diff] [blame] | 446 | PyAPI_FUNC(PyStatus) PyConfig_SetWideStringList(PyConfig *config, |
| 447 | PyWideStringList *list, |
| 448 | Py_ssize_t length, wchar_t **items); |
Victor Stinner | cab5d07 | 2019-05-17 19:01:14 +0200 | [diff] [blame] | 449 | |
Victor Stinner | dedaac0 | 2020-06-08 18:44:50 +0200 | [diff] [blame] | 450 | |
| 451 | /* --- Helper functions --------------------------------------- */ |
| 452 | |
| 453 | /* Get the original command line arguments, before Python modified them. |
| 454 | |
| 455 | See also PyConfig._orig_argv. */ |
| 456 | PyAPI_FUNC(void) Py_GetArgcArgv(int *argc, wchar_t ***argv); |
| 457 | |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 458 | #ifdef __cplusplus |
| 459 | } |
| 460 | #endif |
Victor Stinner | f684d83 | 2019-03-01 03:44:13 +0100 | [diff] [blame] | 461 | #endif /* !Py_LIMITED_API */ |
Victor Stinner | 6c785c0 | 2018-08-01 17:56:14 +0200 | [diff] [blame] | 462 | #endif /* !Py_PYCORECONFIG_H */ |