summaryrefslogtreecommitdiffstats
path: root/Python/import.c
Commit message (Collapse)AuthorAgeFilesLines
...
* bpo-31415: Improve error handling and caching of the importtime option. (#4138)Serhiy Storchaka2017-11-071-13/+20
|
* bpo-31415: Support PYTHONPROFILEIMPORTTIME envvar equivalent to -X ↵Barry Warsaw2017-11-021-4/+11
| | | | | | importtime (#4240) Support PYTHONPROFILEIMPORTTIME envvar equivalent to -X importtime
* bpo-31773: _PyTime_GetPerfCounter() uses _PyTime_t (GH-3983)Victor Stinner2017-10-161-6/+6
| | | | | | | | * Rewrite win_perf_counter() to only use integers internally. * Add _PyTime_MulDiv() which compute "ticks * mul / div" in two parts (int part and remaining) to prevent integer overflow. * Clock frequency is checked at initialization for integer overflow. * Enhance also pymonotonic() to reduce the precision loss on macOS (mach_absolute_time() clock).
* bpo-31773: time.perf_counter() uses again double (GH-3964)Victor Stinner2017-10-121-6/+6
| | | | | | | | time.clock() and time.perf_counter() now use again C double internally. Remove also _PyTime_GetWinPerfCounterWithInfo(): use _PyTime_GetPerfCounterDoubleWithInfo() instead on Windows.
* bpo-31415: Add _PyTime_GetPerfCounter() and use it for -X importtime (#3936)Victor Stinner2017-10-101-2/+2
| | | | | * Add _PyTime_GetPerfCounter() * Use _PyTime_GetPerfCounter() for -X importtime
* bpo-31415: Add `-X importtime` option (GH-3490)INADA Naoki2017-10-031-0/+42
| | | | | | It shows show import time of each module. It's useful for optimizing startup time. Typical usage: python -X importtime -c 'import requests'
* bpo-31574: importlib dtrace (#3749)Christian Heimes2017-09-291-0/+10
| | | | | Importlib was instrumented with two dtrace probes to profile import timing. Signed-off-by: Christian Heimes <christian@python.org>
* bpo-28411: Support other mappings in PyInterpreterState.modules. (#3593)Eric Snow2017-09-151-43/+121
| | | | | The concrete PyDict_* API is used to interact with PyInterpreterState.modules in a number of places. This isn't compatible with all dict subclasses, nor with other Mapping implementations. This patch switches the concrete API usage to the corresponding abstract API calls. We also add a PyImport_GetModule() function (and some other helpers) to reduce a bunch of code duplication.
* bpo-28411: Isolate PyInterpreterState.modules (#3575)Eric Snow2017-09-141-14/+45
| | | | | A bunch of code currently uses PyInterpreterState.modules directly instead of PyImport_GetModuleDict(). This complicates efforts to make changes relative to sys.modules. This patch switches to using PyImport_GetModuleDict() uniformly. Also, a number of related uses of sys.modules are updated for uniformity for the same reason. Note that this code was already reviewed and merged as part of #1638. I reverted that and am now splitting it up into more focused parts.
* bpo-31404: Revert "remove modules from Py_InterpreterState (#1638)" (#3565)Eric Snow2017-09-141-168/+37
| | | PR #1638, for bpo-28411, causes problems in some (very) edge cases. Until that gets sorted out, we're reverting the merge. PR #3506, a fix on top of #1638, is also getting reverted.
* bpo-30860: Consolidate stateful runtime globals. (#3397)Eric Snow2017-09-081-0/+1
| | | | | | | * group the (stateful) runtime globals into various topical structs * consolidate the topical structs under a single top-level _PyRuntimeState struct * add a check-c-globals.py script that helps identify runtime globals Other globals are excluded (see globals.txt and check-c-globals.py).
* bpo-31370: Remove support for threads-less builds (#3385)Antoine Pitrou2017-09-071-14/+0
| | | | | | * Remove Setup.config * Always define WITH_THREAD for compatibility.
* bpo-28411: Remove "modules" field from Py_InterpreterState. (#1638)Eric Snow2017-09-041-37/+168
| | | sys.modules is the one true source.
* bpo-30876: Relative import from unloaded package now reimports the package ↵Serhiy Storchaka2017-07-121-7/+0
| | | | | | | | | (#2639) instead of failing with SystemError. Relative import from non-package now fails with ImportError rather than SystemError.
* bpo-30891: Fix importlib _find_and_load() race condition (#2646)Victor Stinner2017-07-101-4/+0
| | | | | | * Rewrite importlib _get_module_lock(): it is now responsible to hold the imp lock directly. * _find_and_load() now holds the module lock to check if name is in sys.modules to prevent a race condition
* bpo-30814: Fixed a race condition when import a submodule from a package. ↵Serhiy Storchaka2017-07-061-16/+1
| | | | (#2580)
* bpo-30626: Fix error handling in PyImport_Import(). (#2103)Serhiy Storchaka2017-06-151-2/+6
| | | | In rare circumstances PyImport_Import() could return NULL without raising an error.
* Doc nits for bpo-16500 (#1841)Antoine Pitrou2017-05-281-1/+1
| | | | | | * Doc nits for bpo-16500 * Fix more references
* bpo-6532: Make the thread id an unsigned integer. (#781)Serhiy Storchaka2017-03-231-10/+11
| | | | | | | | | | | * bpo-6532: Make the thread id an unsigned integer. From C API side the type of results of PyThread_start_new_thread() and PyThread_get_thread_ident(), the id parameter of PyThreadState_SetAsyncExc(), and the thread_id field of PyThreadState changed from "long" to "unsigned long". * Restore a check in thread_get_ident().
* Use Py_RETURN_FALSE/Py_RETURN_TRUE rather than ↵Serhiy Storchaka2017-03-081-1/+1
| | | | PyBool_FromLong(0)/PyBool_FromLong(1). (#567)
* Removed redundant Argument Clinic directives.Serhiy Storchaka2017-02-041-5/+0
|
* Issue #28999: Use Py_RETURN_NONE, Py_RETURN_TRUE and Py_RETURN_FALSE whereverSerhiy Storchaka2017-01-231-6/+3
| | | | possible. Patch is writen with Coccinelle.
* Use _PyObject_CallMethodIdObjArgs()Victor Stinner2016-12-091-1/+1
| | | | | | | | | Issue #28915: Replace _PyObject_CallMethodId() with _PyObject_CallMethodIdObjArgs() in various modules when the format string was only made of "O" formats, PyObject* arguments. _PyObject_CallMethodIdObjArgs() avoids the creation of a temporary tuple and doesn't have to parse a format string.
* Backed out changeset b9c9691c72c5Victor Stinner2016-12-041-1/+1
| | | | | | Issue #28858: The change b9c9691c72c5 introduced a regression. It seems like _PyObject_CallArg1() uses more stack memory than PyObject_CallFunctionObjArgs().
* Replace PyObject_CallFunctionObjArgs() with fastcallVictor Stinner2016-12-011-1/+1
| | | | | | | | | | | | | | * PyObject_CallFunctionObjArgs(func, NULL) => _PyObject_CallNoArg(func) * PyObject_CallFunctionObjArgs(func, arg, NULL) => _PyObject_CallArg1(func, arg) PyObject_CallFunctionObjArgs() allocates 40 bytes on the C stack and requires extra work to "parse" C arguments to build a C array of PyObject*. _PyObject_CallNoArg() and _PyObject_CallArg1() are simpler and don't allocate memory on the C stack. This change is part of the fastcall project. The change on listsort() is related to the issue #23507.
* Added the const qualifier to char* variables that refer to readonly internalSerhiy Storchaka2016-11-201-1/+1
| | | | UTF-8 represenatation of Unicode objects.
* Issue #28701: Replace PyUnicode_CompareWithASCIIString with ↵Serhiy Storchaka2016-11-161-13/+7
|\ | | | | | | | | | | _PyUnicode_EqualToASCIIString. The latter function is more readable, faster and doesn't raise exceptions.
| * Issue #28701: Replace PyUnicode_CompareWithASCIIString with ↵Serhiy Storchaka2016-11-161-13/+7
| | | | | | | | | | | | _PyUnicode_EqualToASCIIString. The latter function is more readable, faster and doesn't raise exceptions.
| * [backport to 3.5] - issue26896 - Disambiguate uses of "importer" with "finder".Senthil Kumaran2016-09-071-3/+4
| |
* | Fix potential NULL pointer dereference in _imp_create_builtinChristian Heimes2016-09-081-0/+4
| | | | | | | | | | | | | | PyModule_GetDef() can return NULL. Let's check the return value properly like in the other five cases. CID 1299590
* | Issue #27911: Remove some unnecessary error checks in import.c.Brett Cannon2016-09-081-6/+2
| | | | | | | | Thanks to Xiang Zhang for the patch.
* | Issue #15767: Use ModuleNotFoundError.Eric Snow2016-09-071-1/+2
| |
* | MergeRaymond Hettinger2016-08-311-1/+1
|\ \ | |/
| * Issue #27909: Fix INCREF for possible NULL valueRaymond Hettinger2016-08-311-1/+1
| |
* | Issue #22557: Now importing already imported modules is up to 2.5 times faster.Serhiy Storchaka2016-08-021-218/+177
| |
* | Issue #27419: Added temporary workaround for subinterpreters.Serhiy Storchaka2016-07-171-1/+4
|\ \ | |/
| * Issue #27419: Added temporary workaround for subinterpreters.Serhiy Storchaka2016-07-171-1/+4
| |
* | Issue #27419: Standard __import__() no longer look up "__import__" in globalsSerhiy Storchaka2016-07-171-8/+4
|\ \ | |/ | | | | | | | | or builtins for importing submodules or "from import". Fixed a crash if raise a warning about unabling to resolve package from __spec__ or __package__.
| * Issue #27419: Standard __import__() no longer look up "__import__" in globalsSerhiy Storchaka2016-07-171-8/+4
| | | | | | | | | | or builtins for importing submodules or "from import". Fixed handling an error of non-string package name.
* | Issue #26896: Disambiguate uses of "importer" with "finder".Brett Cannon2016-07-081-3/+4
| | | | | | | | Thanks to Oren Milman for the patch.
* | - Issue #27332: Fixed the type of the first argument of module-level functionsSerhiy Storchaka2016-07-071-28/+28
|\ \ | |/ | | | | generated by Argument Clinic. Patch by Petr Viktorin.
| * Issue #27332: Fixed the type of the first argument of module-level functionsSerhiy Storchaka2016-07-071-28/+28
| | | | | | | | generated by Argument Clinic. Patch by Petr Viktorin.
* | Cleanup import.cVictor Stinner2016-05-201-39/+28
| | | | | | | | | | | | | | | | | | * Replace PyUnicode_RPartition() with PyUnicode_FindChar() and PyUnicode_Substring() to avoid the creation of a temporary tuple. * Use PyUnicode_FromFormat() to build a string and avoid the single_dot ('.') singleton Thanks Serhiy Storchaka for your review.
* | fs_unicode_converter is no longer used.Serhiy Storchaka2016-04-141-8/+0
| |
* | Issue #22570: Renamed Py_SETREF to Py_XSETREF.Serhiy Storchaka2016-04-061-2/+2
|\ \ | |/
* | Issue #25698: Prevent possible replacing imported module with the empty oneSerhiy Storchaka2016-02-101-2/+6
|\ \ | |/ | | | | if the stack is too deep.
| * Issue #25698: Prevent possible replacing imported module with the empty oneSerhiy Storchaka2016-02-101-2/+6
| | | | | | | | if the stack is too deep.
* | Issue #18018: Raise an ImportError if a relative import is attemptedBrett Cannon2016-01-231-3/+8
| | | | | | | | | | | | | | | | with no known parent package. Previously SystemError was raised if the parent package didn't exist (e.g., __package__ was set to ''). Thanks to Florent Xicluna and Yongzhi Pan for reporting the issue.
* | Issue #25791: Warn when __package__ != __spec__.parent.Brett Cannon2016-01-221-39/+58
| | | | | | | | | | | | | | | | | | In a previous change, __spec__.parent was prioritized over __package__. That is a backwards-compatibility break, but we do eventually want __spec__ to be the ground truth for module details. So this change reverts the change in semantics and instead raises an ImportWarning when __package__ != __spec__.parent to give people time to adjust to using spec objects.
* | Issue #25791: Raise an ImportWarning when __spec__ or __package__ areBrett Cannon2016-01-151-21/+43
| | | | | | | | | | | | | | | | not defined for a relative import. This is the start of work to try and clean up import semantics to rely more on a module's spec than on the myriad attributes that get set on a module. Thanks to Rose Ames for the patch.