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