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