Commit Graph

152 Commits

Author SHA1 Message Date
Guido van Rossum a0fec2b5df Two more refinements of the cleanup process.
(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.
1998-02-06 17:16:02 +00:00
Guido van Rossum 758eec0172 Rewritten PyImport_Cleanup() and its helper, clear_carefully(). They
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__
1998-01-19 21:58:26 +00:00
Guido van Rossum e8c27bb3ea Oops! Should've renamed dos_8x3 to dos-8x3 here, too. 1997-12-17 18:57:16 +00:00
Guido van Rossum 595d7ba069 Jeff Rush: add definition for S_IFMT for VisualAge C/C++ under OS2. 1997-12-05 21:45:29 +00:00
Guido van Rossum 197346fafe New policy for package imports: only a directory containing
__init__.py (or __init__.pyc/.pyo, whichever applies) is considered a
package.  All other subdirectories are left alone.  Should make Konrad
Hinsen happy!
1997-10-31 18:38:52 +00:00
Guido van Rossum 771c6c8f7a Instead of using _PyImport_Inittab[] directly, use the new "official"
pointer *PyImport_Inittab which is initialized to _PyImport_Inittab.
1997-10-31 18:37:24 +00:00
Guido van Rossum 9a61dc90e2 Moved mac-specific speedup to a different place (Jack) 1997-10-08 15:25:08 +00:00
Guido van Rossum a7f2e813c9 Remove unreachable "return 1" at end of ensure_fromlist(). 1997-10-03 15:33:32 +00:00
Guido van Rossum 0207e6de38 Added docstrings. Not for the obsolete functions though. 1997-09-09 22:04:42 +00:00
Guido van Rossum c172f26861 Deleted find_module_in_package and find_module_in_directory -- they
aren't needed and it was a mistake to add them.
1997-09-09 20:54:35 +00:00
Guido van Rossum a86f77d4dd Crrected a flow control error that caused the wrong error message when
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.
1997-09-09 18:53:47 +00:00
Guido van Rossum 9905ef9669 Added support for __all__, which should be a list of modules to be
imported when the user says "from package import *".
1997-09-08 16:07:11 +00:00
Guido van Rossum 0c81945808 Bugfix: import A.B from inside package was busted by mark_miss optimization. 1997-09-07 06:16:57 +00:00
Guido van Rossum f5f5fdbdd0 Significant speedup -- when a submodule imports a global module, add a
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.)
1997-09-06 20:29:52 +00:00
Guido van Rossum 222ef56bbf Fix reload() for package submodules. 1997-09-06 19:41:09 +00:00
Guido van Rossum 17fc85f2f5 Phase two of package import. "import a.b.c" and all variants now do the
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!
1997-09-06 18:52:03 +00:00
Guido van Rossum aee0bad0a5 First part of package support.
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!
1997-09-05 07:33:22 +00:00
Guido van Rossum 7c14103d77 Keep gcc -Wall happy 1997-08-15 02:52:08 +00:00
Guido van Rossum d47a0a86b4 Added Jim Fulton's PyImport_Import(), which calls whatever
__import__() hook is currently installed.
1997-08-14 20:11:26 +00:00
Guido van Rossum 741689d5f3 Use string interning and caching to get speedups on the mac (Jack). 1997-08-12 14:53:39 +00:00
Guido van Rossum 085d269f1d New rules for deleting modules. Rather than having an elaborate
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). */
1997-08-05 02:20:51 +00:00
Guido van Rossum 25ce566661 The last of the mass checkins for separate (sub)interpreters.
Everything should now work again.

See the comments for the .h files mass checkin (e.g. pystate.h) for
more detail.
1997-08-02 03:10:38 +00:00
Guido van Rossum ef3d02ebb9 Removed some variables that are used to exchange data between import.c and
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.
1997-07-21 14:54:36 +00:00
Guido van Rossum b65e85cb73 Fix problem discovered by Greg McFarlane: when an imported module
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__].
1997-07-10 18:00:45 +00:00
Guido van Rossum af5dfb4ceb One last rename glitch: import_modules -> _PyImport_Modules. 1997-05-14 17:36:12 +00:00
Guido van Rossum b05a5c7698 Instead of importing graminit.h whenever one of the three grammar 'root'
symbols is needed, define these in Python.h with a Py_ prefix.
1997-05-07 17:46:13 +00:00
Guido van Rossum 0bac33b420 Oops, forgot one: inittab. 1997-04-29 20:24:10 +00:00
Guido van Rossum 79f25d9a7b Quickly renamed the remaining files -- this directory is done. 1997-04-29 20:08:16 +00:00
Guido van Rossum 6bf62dad9e Keep gcc -Wall and Microsoft VC happy. 1997-04-11 20:37:35 +00:00
Guido van Rossum 0824f63cfc When -O is given, use ".pyo" instead of ".pyc". 1997-03-11 18:37:35 +00:00
Guido van Rossum 99d182550b New magin number (because of linenumber table). 1997-01-24 03:44:53 +00:00
Guido van Rossum dd5db43905 New MAGIC number (code objects have one more item when marshalled). 1997-01-17 21:06:11 +00:00
Guido van Rossum 80bb9655f0 Keep gcc -Wall happy. 1996-12-05 23:27:02 +00:00
Guido van Rossum d266eb460e New permission notice, includes CNRI. 1996-10-25 14:44:06 +00:00
Guido van Rossum ac279109d4 PYTHONWIN -> MS_COREDLL 1996-08-22 23:10:58 +00:00
Guido van Rossum 1741d60725 Added casts from unsigned char to char when calling rds_object() on
frozen code.
1996-08-08 18:52:59 +00:00
Guido van Rossum 8861b74445 Changes for slice and ellipses 1996-07-30 16:49:37 +00:00
Guido van Rossum 42cd305b25 new .pyc magic number (** operator) 1996-07-21 02:28:18 +00:00
Guido van Rossum 6f489d989d Slightly different Windows ifdefs 1996-06-28 20:15:15 +00:00
Guido van Rossum 0e41c8c848 Cosmetic change to the dox_8x3 hack. 1996-06-20 14:18:34 +00:00
Guido van Rossum cfd0a22252 struct frozen is now struct _frozen and comes from import.h. 1996-06-17 17:06:34 +00:00
Guido van Rossum 40f470f7e0 moved verbose decl to pydebug.h; added dos_8x3 feature 1996-05-23 22:51:04 +00:00
Guido van Rossum 9c9a07c9c9 Remember source filename as <module>.__file__. 1996-05-16 20:43:40 +00:00
Guido van Rossum a5a3db70d4 Under NT, interface to mysterious module registry. (Mark H.) 1996-04-09 02:39:59 +00:00
Guido van Rossum be1a6e29e3 Change Mac creator from 'PYTH' to 'Pyth' -- 'PYTH' was already taken
by someone else, 'Pyth' is now officially registered by the PSA.
1996-02-21 15:29:20 +00:00
Jack Jansen 95ffa23597 Removed unused variables 1995-10-03 14:38:41 +00:00
Guido van Rossum 6ec1efb645 add imp.get_frozen_object() 1995-08-04 04:08:57 +00:00
Jack Jansen 614cf81606 Undef 'argument' before including mac headers 1995-07-28 11:28:14 +00:00
Guido van Rossum ce0a6ded4d never close the file in imp.load_... 1995-07-26 18:13:27 +00:00
Guido van Rossum 681d79aaf3 keyword arguments and faster calls 1995-07-18 14:51:37 +00:00
Guido van Rossum 7faeab3103 new MAGIC; some changes to default files for imp.load_... functions 1995-07-07 22:50:36 +00:00
Jack Jansen ae12e19409 Added PY_RESOURCE (mac only) to imp module 1995-06-18 20:06:44 +00:00
Sjoerd Mullender fbe6d33ffd Check if we've already loaded a dynamic module under a different name. 1995-06-12 15:51:34 +00:00
Guido van Rossum c388068431 magic number changes of CR/LF are swapped 1995-02-19 15:54:18 +00:00
Jack Jansen 9c96a923fb Added hooks to support importing pyc code from a resource on the mac. 1995-02-15 22:57:06 +00:00
Guido van Rossum 0b3449010e init_frozen non-static, frozenmain.c not in Makefile any more 1995-02-07 15:35:27 +00:00
Guido van Rossum 90f0e07a5b fix glaring bug in get_magic 1995-01-30 12:53:06 +00:00
Guido van Rossum 0de81bfec9 don't dictclear deleted modules in doneimport 1995-01-26 00:41:28 +00:00
Guido van Rossum 7f9fa97ca2 fix import related leaks 1995-01-20 16:53:12 +00:00
Guido van Rossum 94390ec2a6 use getbuiltins() everywhere, it defaults to getbuiltidict() 1995-01-12 11:37:57 +00:00
Guido van Rossum 6135a87f2b __builtins__ mods (and sys_checkinterval for ceval.c) 1995-01-09 17:53:26 +00:00
Guido van Rossum 6d023c98b0 Added 1995 to copyright message.
bltinmodule.c: fixed coerce() nightmare in ternary pow().
modsupport.c (initmodule2): pass METH_FREENAME flag to newmethodobject().
pythonrun.c: move flushline() into and around print_error().
1995-01-04 19:12:13 +00:00
Guido van Rossum 1ae940a587 Lots of changes, most minor (fatal() instead of abort(), use of
err_fetch/err_restore and so on).  But...
NOTE: import.c has been rewritten and all the DL stuff is now in the
new file importdl.c.
1995-01-02 19:04:15 +00:00
Sjoerd Mullender 06fe7e5c2c Added comment symbols around word after #endif. 1994-12-14 15:30:04 +00:00
Guido van Rossum 6c849697fd Fix various potential buffer overrun problems. 1994-09-26 15:47:17 +00:00
Guido van Rossum fdef271550 * Import/pythonrun.h, Python/{import,pythonrun}.c,
mac/macsetfiletype.c: changes by Jack to execute .pyc file passed
	as command line argument.  On the Mac .pyc files are given a
	special type so they can be double-clicked
1994-09-14 13:31:04 +00:00
Guido van Rossum ae311bd503 Mods for HP-UX dynamic loading. 1994-09-12 10:39:56 +00:00
Guido van Rossum 74e6a118ca * Python/import.c: support *.o/*.so as alternative for
*module.o/*module.so

        * Python/import.c: if initializing a module did not enter the
        module into sys.modules, it may have raised an exception -- don't
        override this exception.

Merged NT changes

        * Python/import.c: add lost NT-specific code back in

Fixed NT changes
1994-08-29 12:54:38 +00:00
Guido van Rossum 590baa4a7a * import.c (get_module): pass .py filename to parse_file, not .pyc filename!
* funcobject.c (func_repr): don't call getstringvalue(None) for anonymous
  functions.
* bltinmodule.c: removed lambda (which is now a built-in function);
  removed implied lambda for string arg to filter/map/reduce.
* Grammar, graminit.[ch], compile.[ch]: replaced lambda as built-in
  function by lambda as grammar entity: instead of "lambda('x: x+1')" you
  write "lambda x: x+1".
* Xtmodule.c (checkargdict): return 0, not NULL, for error.
1993-11-30 13:40:46 +00:00
Guido van Rossum c45611d0e3 * import.c (get_module): total rewrite, to ensure proper search order: for
each dir in sys.path, try each possible extension.  (Note: C extensions
  are loaded before Python modules in the same directory, to allow having
  a C version used when dynamic loading is supported and a Python version
  as a back-up.)
* import.c (reload_module): test for error from getmodulename()
* moduleobject.c: implement module name as dict entry '__name__' instead
  of special-casing it in module_getattr(); this way a module (or
  function!) can access its own module name, and programs that know what
  they are doing can rename modules.
* stdwinmodule.c (initstdwin): strip ".py" suffix of argv[0].
1993-11-17 22:58:56 +00:00
Guido van Rossum 5a2a683e72 * filemodule.c: added writelines() -- analogous to readlines()
* import.c: fixed core dump when out-of-date .pyc file encountered (again!)
1993-10-25 09:59:04 +00:00
Sjoerd Mullender 52c1f51554 import.c: When something is wrong with the .pyc, properly open the .py
file.
object.c: Write allocation statistics to stderr.
1993-10-25 08:40:52 +00:00
Guido van Rossum 89b3325dc4 * import.c (MAGIC): Changed magic word to avoid confusion about exec
function vs. exec statement
* bltinmodule.c: renamed the module to __builtin__.
* posixmodule.c (posix_execv): renamed exec --> execv since it is now a
  reserved word.
1993-10-22 14:26:06 +00:00
Guido van Rossum cacd9579d4 * stdwinmodule.c (stdwin_done): interface to shutdown stdwin (now this is
no longer done by config.c).
* stdwinmodule.c (initstdwin), config.c (initall): get command line
  arguments from sys.argv instead of special-casing stdwin in config.c
* import.c (get_module): fix core dump when foomodule.o does not define
  initfoo().
* ChangeLog: documented changes by Sjoerd.
1993-10-18 11:44:47 +00:00
Guido van Rossum 21d335ed9e Makefile, import.c: Lance's alternative module search (allow .pyc file
without .py file); Bill's dynamic loading for SunOS using shared
libraries.

pwdmodule.c (mkgrent): remove DECREF of uninitialized variable.

classobject.c (instance_getattr): Fix case when class lookup returns
unbound method instead of function.
1993-10-15 13:01:11 +00:00
Guido van Rossum eb6b33a837 * classobject.c: in instance_getattr, don't make a method out of a
function found as instance data.
* socketmodule.c: added 'flags' argument sendto/recvfrom, rewrite
  argument parsing in send/recv.
* More changes related to access (terminology change: owner instead of
  class; allow any object as owner; local/global variables are owned
  by their dictionary, only class/instance data is owned by the class;
  "from...import *" now only imports objects with public access; etc.)
1993-05-25 09:38:27 +00:00
Guido van Rossum 81daa32c15 Access checks now work, at least for instance data (not for methods
yet).  The class is now passed to eval_code and stored in the current
frame.  It is also stored in instance method objects.  An "unbound"
instance method is now returned when a function is retrieved through
"classname.funcname", which when called passes the class to eval_code.
1993-05-20 14:24:46 +00:00
Guido van Rossum 25831652fd Several changes in one:
(1) dictionaries/mappings now have attributes values() and items() as
well as keys(); at the C level, use the new function mappinggetnext()
to iterate over a dictionary.

(2) "class C(): ..." is now illegal; you must write "class C: ...".

(3) Class objects now know their own name (finally!); and minor
improvements to the way how classes, functions and methods are
represented as strings.

(4) Added an "access" statement and semantics.  (This is still
experimental -- as long as you don't use the keyword 'access' nothing
should be changed.)
1993-05-19 14:50:45 +00:00
Guido van Rossum f56e3db1dd Support for frozen scripts; added -i option. 1993-04-01 20:59:32 +00:00
Guido van Rossum 8b17d6bd89 Changes to speed up local variables enormously, by avoiding dictionary
lookup (opcode.h, ceval.[ch], compile.c, frameobject.[ch],
pythonrun.c, import.c).  The .pyc MAGIC number is changed again.
Added get_menu_text to flmodule.
1993-03-30 13:18:41 +00:00
Guido van Rossum 9bfef44d97 * Changed all copyright messages to include 1993.
* Stubs for faster implementation of local variables (not yet finished)
* Added function name to code object.  Print it for code and function
  objects.  THIS MAKES THE .PYC FILE FORMAT INCOMPATIBLE (the version
  number has changed accordingly)
* Print address of self for built-in methods
* New internal functions getattro and setattro (getattr/setattr with
  string object arg)
* Replaced "dictobject" with more powerful "mappingobject"
* New per-type functio tp_hash to implement arbitrary object hashing,
  and hashobject() to interface to it
* Added built-in functions hash(v) and hasattr(v, 'name')
* classobject: made some functions static that accidentally weren't;
  added __hash__ special instance method to implement hash()
* Added proper comparison for built-in methods and functions
1993-03-29 10:43:31 +00:00
Guido van Rossum 34679b7661 * Added Fixcprt.py: script to fix copyright message.
* various modules: added 1993 to copyright.
* thread.c: added copyright notice.
* ceval.c: minor change to error message for "+"
* stdwinmodule.c: check for error from wfetchcolor
* config.c: MS-DOS fixes (define PYTHONPATH, use DELIM, use osdefs.h)
* Add declaration of inittab to import.h
* sysmodule.c: added sys.builtin_module_names
* xxmodule.c, xxobject.c: fix minor errors
1993-01-26 13:33:44 +00:00
Guido van Rossum ff4949eeee * Makefile: cosmetics
* socketmodule.c: get rid of makepair(); fix makesocketaddr to fix
  broken recvfrom()
* socketmodule: get rid of getStrarg()
* ceval.h: move eval_code() to new file eval.h, so compile.h is no
  longer needed.
* ceval.c: move thread comments to ceval.h; always make save/restore
  thread functions available (for dynloaded modules)
* cdmodule.c, listobject.c: don't include compile.h
* flmodule.c: include ceval.h
* import.c: include eval.h instead of ceval.h
* cgen.py: add forground(); noport(); winopen(""); to initgl().
* bltinmodule.c, socketmodule.c, fileobject.c, posixmodule.c,
  selectmodule.c:
  adapt to threads (add BGN/END SAVE macros)
* stdwinmodule.c: adapt to threads and use a special stdwin lock.
* pythonmain.c: don't include getpythonpath().
* pythonrun.c: use BGN/END SAVE instead of direct calls; also more
  BGN/END SAVE calls etc.
* thread.c: bigger stack size for sun; change exit() to _exit()
* threadmodule.c: use BGN/END SAVE macros where possible
* timemodule.c: adapt better to threads; use BGN/END SAVE; add
  longsleep internal function if BSD_TIME; cosmetics
1992-08-05 19:58:53 +00:00
Guido van Rossum bab9d03855 Copyright for 1992 added 1992-04-05 14:26:55 +00:00
Guido van Rossum 4cd8b5cad8 Print messages about where from modules are imported when -v is given. 1992-03-27 17:21:04 +00:00
Guido van Rossum d8bac6de57 Move SEP to osdefs.h. Use MAXPATHLEN from osdefs.h. 1992-02-26 15:19:13 +00:00
Guido van Rossum e0513dee58 getbinaryname is now part of dl_loadmod. 1992-01-26 18:15:22 +00:00
Guido van Rossum e25c25635e Support for dynamic loading added. 1992-01-19 16:28:21 +00:00
Guido van Rossum 4135e78204 Use IOError and ImportError when import fails. 1991-12-24 13:26:56 +00:00
Guido van Rossum 6e93c07a06 Change RuntimeError into IOError when module file not found on reload. 1991-12-16 15:43:47 +00:00
Guido van Rossum 3ddee714d1 New magic word; and check it. 1991-12-16 13:06:34 +00:00
Guido van Rossum f0ada4a130 Use more dict2 functions./ 1991-08-16 09:01:08 +00:00
Guido van Rossum d6a15ada72 Generalize to macintosh. 1991-06-24 22:30:42 +00:00
Guido van Rossum c405b7b2fa Support ".pyc" files: cached compilation results.
(Similar to Emacs ".elc" files.)
1991-06-04 19:39:42 +00:00
Guido van Rossum 175a9ea8c8 Pre-define MS-DOS separator 1991-05-05 20:07:59 +00:00
Guido van Rossum 66f1fa83f1 Added forward declaration (to satisfy Standard C). 1991-04-03 19:03:52 +00:00
Guido van Rossum f70e43a073 Added copyright notice. 1991-02-19 12:39:46 +00:00
Guido van Rossum 7f133ed073 Call the init function of a built-in module here.
,
1991-02-19 12:23:57 +00:00
Guido van Rossum 3f5da24ea3 "Compiling" version 1990-12-20 15:06:42 +00:00
Guido van Rossum 3304975647 Add extra DECREF. 1990-11-18 17:36:26 +00:00