summaryrefslogtreecommitdiffstats
path: root/Python/import.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix two smal memory leaks discovered by Vadim Chugunov.Guido van Rossum1998-07-011-3/+2
|
* Ignore Windows case check for ALL CAPS 8.3 filesGuido van Rossum1998-06-241-1/+39
|
* Fix a curious bug: statements like "import sys.time" would succeed,Guido van Rossum1998-05-191-3/+10
| | | | | | because the path through the code would notice that sys.__path__ did not exist and it would fall back to the default path (builtins + sys.path) instead of failing). No longer.
* New APIs for embedding applications that want to add their own entriesGuido van Rossum1998-05-141-0/+58
| | | | | | | | | | | to the table of built-in modules. This should normally be called *before* Py_Initialize(). When the malloc() or realloc() call fails, -1 is returned and the existing table is unchanged. After a similar function by Just van Rossum. int PyImport_ExtendInittab(struct _inittab *newtab); int PyImport_AppendInittab(char *name, void (*initfunc)());
* Reject empty module names -- otherwise __import__("") does somethingGuido van Rossum1998-04-111-0/+5
| | | | weird!
* Comment out a label on an #endif.Guido van Rossum1998-04-101-1/+1
|
* Address warnings issued by the MSVC++ compilerGuido van Rossum1998-04-101-1/+1
|
* Support for frozen packages, matching the revamped Tools/freeze.Guido van Rossum1998-03-051-14/+60
| | | | | | Frozen packages are indicated by a negative size (the code string is the __import__.py file). A frozen package module has its __path__ set to a string, the package name.
* Oops -- overuse of dabbrev-expand introduced a strange bug, whereGuido van Rossum1998-03-031-1/+1
| | | | instead of 'locals' I was passing 'lock_import' to import_module_ex().
* Add a single Python-wide (!) lock on import. Only one thread at aGuido van Rossum1998-03-031-8/+71
| | | | | | | | | | | | | | | | | | | | time can be in PyImport_ImportModuleEx(). Recursive calls from the same thread are okay. Potential problems: - The lock should really be part of the interpreter state rather than global, but that would require modifying more files, and I first want to figure out whether this works at all. - One could argue that the lock should be per module -- however that would be complicated to implement. We would have to have a linked list of locks per module name, *or* invent a new object type to represent a lock, so we can store the locks in the module or in a separate dictionary. Both seem unwarranted. The one situation where this can cause problems is when loading a module takes a long time, e.g. when the module's initialization code interacts with the user -- during that time, no other threads can run. I say, "too bad."
* Moved clear_carefully() to _PyModule_Clear() in moduleobject.cGuido van Rossum1998-02-191-69/+31
| | | | | | | | | | | | | | | (modified) and use that. Some differences in the cleanup algorithm: - Clear __main__ before the other modules. - Delete more sys variables: including ps1, ps2, exitfunc, argv, and even path -- this will prevent new imports! - Restore stdin, stdout, stderr from __stdin__, __stdout__, __stderr__, effectively deleting hooks that the user might have installed -- so their (the hooks') destructors will run.
* Small patches to the DJGPP version of check_case().Guido van Rossum1998-02-181-1/+3
|
* Added DJGPP version of check_case(), by Pit Scrorpion (Hans Nowak).Guido van Rossum1998-02-131-0/+28
| | | | (BTW, the Mac version was by Jack Jansen.)
* Add case checking feature on import.Guido van Rossum1998-02-131-1/+78
| | | | | | | | | | | | | This is an option for OS-es with case-insensitive but case-preserving filesystems. It is currently supported for Win32 and MacOS. To enable it, #define CHECK_IMPORT_CASE in your platform specific config.h. It is enabled by default on those systems where it is supported. On Win32, it can be disabled at runtime by setting the environment variable PYTHONCASEOK (to any value). When enabled, the feature checks that the case of the requested module name matches that of the filename found in the filesystem, and raises a NameError exception when they don't match.
* Added PyImport_ExecCodeModuleEx(), which adds an extra parameter toGuido van Rossum1998-02-111-5/+25
| | | | | | pass it the true file. This is used to set __file__ properly, instead of believing what the code object carries with it. (If the pointer is NULL, the code object's co_filename is still used.)
* Two more refinements of the cleanup process.Guido van Rossum1998-02-061-3/+52
| | | | | | | | | | | | (1) Explicitly clear __builtin__._ and sys.{last,exc}_* before clearing anything else. These are common places where user values hide and people complain when their destructors fail. Since the modules containing them are deleted *last* of all, they would come too late in the normal destruction order. Sigh. (2) Add some debugging aid to cleanup (after a suggestion by Marc Lemburg) -- print the names of the modules being cleaned, and (when -vv is used) print the names of the variables being cleared.
* Rewritten PyImport_Cleanup() and its helper, clear_carefully(). TheyGuido van Rossum1998-01-191-12/+98
| | | | | | | | | | | | | | | | | | now implement the following finalization strategy. 1. Whenever this code deletes a module, its directory is cleared carefully, as follows: - set all names to None that begin with exactly one underscore - set all names to None that don't begin with two underscores - clear the directory 2. Modules are deleted in the following order: - modules with a reference count of 1, except __builtin__ or __sys__ - repeat until no more are found with a reference count of 1 - __main__ if it's still there - all remaining modules except __builtin__ or sys - sys _ __builtin__
* Oops! Should've renamed dos_8x3 to dos-8x3 here, too.Guido van Rossum1997-12-171-3/+3
|
* Jeff Rush: add definition for S_IFMT for VisualAge C/C++ under OS2.Guido van Rossum1997-12-051-0/+5
|
* New policy for package imports: only a directory containingGuido van Rossum1997-10-311-2/+38
| | | | | | __init__.py (or __init__.pyc/.pyo, whichever applies) is considered a package. All other subdirectories are left alone. Should make Konrad Hinsen happy!
* Instead of using _PyImport_Inittab[] directly, use the new "official"Guido van Rossum1997-10-311-4/+8
| | | | pointer *PyImport_Inittab which is initialized to _PyImport_Inittab.
* Moved mac-specific speedup to a different place (Jack)Guido van Rossum1997-10-081-5/+5
|
* Remove unreachable "return 1" at end of ensure_fromlist().Guido van Rossum1997-10-031-1/+1
|
* Added docstrings. Not for the obsolete functions though.Guido van Rossum1997-09-091-6/+46
|
* Deleted find_module_in_package and find_module_in_directory -- theyGuido van Rossum1997-09-091-53/+0
| | | | aren't needed and it was a mistake to add them.
* Crrected a flow control error that caused the wrong error message whenGuido van Rossum1997-09-091-22/+6
| | | | | | load-module() didn't find a built-in or frozen module. Also got rid of is_frozen(), which duplicated the functionality of find_frozen()!=NULL.
* Added support for __all__, which should be a list of modules to beGuido van Rossum1997-09-081-3/+16
| | | | imported when the user says "from package import *".
* Bugfix: import A.B from inside package was busted by mark_miss optimization.Guido van Rossum1997-09-071-1/+1
|
* Significant speedup -- when a submodule imports a global module, add aGuido van Rossum1997-09-061-5/+20
| | | | | | | | | | | | | | | | | | dummy entry to sys.modules, marking the absence of a submodule by the same name. Thus, if module foo.bar executes the statement "import time", sys.modules['foo.time'] will be set to None, once the absence of a module foo.time is confirmed (by looking for it in foo's path). The next time when foo.bar (or any other submodule of foo) executes "import time", no I/O is necessary to determine that there is no module foo.time. (Justification: It may seem strange to pollute sys.modules. However, since we're doing the lookup anyway it's definitely the fastest solution. This is the same convention that 'ni' uses and I haven't heard any complaints.)
* Fix reload() for package submodules.Guido van Rossum1997-09-061-2/+24
|
* Phase two of package import. "import a.b.c" and all variants now do theGuido van Rossum1997-09-061-17/+299
| | | | | | | | | | | | | | | right thing. Still to do: - Make reload() of a submodule work. - Performance tweaks -- currently, a submodule that tries to import a global module *always* searches the package directory first, even if the global module was already imported. Not sure how to solve this one; probably need to record misses per package. - Documentation!
* First part of package support.Guido van Rossum1997-09-051-130/+441
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This doesn't yet support "import a.b.c" or "from a.b.c import x", but it does recognize directories. When importing a directory, it initializes __path__ to a list containing the directory name, and loads the __init__ module if found. The (internal) find_module() and load_module() functions are restructured so that they both also handle built-in and frozen modules and Mac resources (and directories of course). The imp module's find_module() and (new) load_module() also have this functionality. Moreover, imp unconditionally defines constants for all module types, and has two more new functions: find_module_in_package() and find_module_in_directory(). There's also a new API function, PyImport_ImportModuleEx(), which takes all four __import__ arguments (name, globals, locals, fromlist). The last three may be NULL. This is currently the same as PyImport_ImportModule() but in the future it will be able to do relative dotted-path imports. Other changes: - bltinmodule.c: in __import__, call PyImport_ImportModuleEx(). - ceval.c: always pass the fromlist to __import__, even if it is a C function, so PyImport_ImportModuleEx() is useful. - getmtime.c: the function has a second argument, the FILE*, on which it applies fstat(). According to Sjoerd this is much faster. The first (pathname) argument is ignored, but remains for backward compatibility (so the Mac version still works without changes). By cleverly combining the new imp functionality, the full support for dotted names in Python (mini.py, not checked in) is now about 7K, lavishly commented (vs. 14K for ni plus 11K for ihooks, also lavishly commented). Good night!
* Keep gcc -Wall happyGuido van Rossum1997-08-151-1/+0
|
* Added Jim Fulton's PyImport_Import(), which calls whateverGuido van Rossum1997-08-141-0/+78
| | | | __import__() hook is currently installed.
* Use string interning and caching to get speedups on the mac (Jack).Guido van Rossum1997-08-121-1/+17
|
* New rules for deleting modules. Rather than having an elaborateGuido van Rossum1997-08-051-1/+29
| | | | | | | | | | | | scheme based on object's types, have a simple two-phase scheme based on object's *names*: /* To make the execution order of destructors for global objects a bit more predictable, we first zap all objects whose name starts with a single underscore, before we clear the entire dictionary. We zap them by replacing them with None, rather than deleting them from the dictionary, to avoid rehashing the dictionary (to some extent). */
* The last of the mass checkins for separate (sub)interpreters.Guido van Rossum1997-08-021-46/+120
| | | | | | | Everything should now work again. See the comments for the .h files mass checkin (e.g. pystate.h) for more detail.
* Removed some variables that are used to exchange data between import.c andGuido van Rossum1997-07-211-2/+2
| | | | | | | | importdl.c: the MAXSUFFIXSIZE macro is now defined in importdl.h, and the modules dictionary is now passed using PyImport_GetModuleDict(). Also undefine USE_SHLIB for AIX -- in AIX 4.2 and up, dlfcn.h exists but we don't want to use it.
* Fix problem discovered by Greg McFarlane: when an imported moduleGuido van Rossum1997-07-101-0/+7
| | | | | | | | | replaces its own entry in sys.module, reference count errors ensue; even if there is no reference count problem, it would be preferable for the import to yield the new thing in sys.modules anyway (if only because that's what later imports will yield). This opens the road to an official hack to implement a __getattr__ like feature for modules: stick an instance in sys.modules[__name__].
* One last rename glitch: import_modules -> _PyImport_Modules.Guido van Rossum1997-05-141-15/+15
|
* Instead of importing graminit.h whenever one of the three grammar 'root'Guido van Rossum1997-05-071-4/+1
| | | | symbols is needed, define these in Python.h with a Py_ prefix.
* Oops, forgot one: inittab.Guido van Rossum1997-04-291-7/+7
|
* Quickly renamed the remaining files -- this directory is done.Guido van Rossum1997-04-291-270/+282
|
* Keep gcc -Wall and Microsoft VC happy.Guido van Rossum1997-04-111-5/+6
|
* When -O is given, use ".pyo" instead of ".pyc".Guido van Rossum1997-03-111-1/+9
|
* New magin number (because of linenumber table).Guido van Rossum1997-01-241-1/+1
|
* New MAGIC number (code objects have one more item when marshalled).Guido van Rossum1997-01-171-1/+2
|
* Keep gcc -Wall happy.Guido van Rossum1996-12-051-1/+5
|
* New permission notice, includes CNRI.Guido van Rossum1996-10-251-13/+20
|
* PYTHONWIN -> MS_COREDLLGuido van Rossum1996-08-221-1/+1
|