summaryrefslogtreecommitdiffstats
path: root/Python
Commit message (Collapse)AuthorAgeFilesLines
* Support type objects in isinstance().Guido van Rossum1997-12-021-10/+15
| | | | | E.g. isinstance('',types.StringType) will return true now instead of raising a TypeError exception. This is for JPython compatibility.
* Apply str() to sys.ps1 or sys.ps2 before using them as a prompt, soGuido van Rossum1997-11-251-16/+14
| | | | | you can assign an object whose str() evaluates to the current directory (or whatever).
* os2 patch by Jeff RushGuido van Rossum1997-11-223-2/+44
|
* Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.Guido van Rossum1997-11-201-3/+5
|
* Fix importing of shared libraries from inside packages.Guido van Rossum1997-11-192-3/+26
| | | | | | | | This is a bit of a hack: when the shared library is loaded, the module name is "package.module", but the module calls Py_InitModule*() with just "module" for the name. The shared library loader squirrels away the true name of the module in _Py_PackageContext, and Py_InitModule*() will substitute this (if the name actually matches).
* Two changes (here we go again :-( ).Guido van Rossum1997-11-191-35/+3
| | | | | | | | | | 1) The __builtins__ variable in the __main__ module is set to the __builtin__ module instead of its __dict__. 2) Get rid of the SIGHUP and SIGTERM handlers. They can't be made to work reliably when threads may be in use, they are Unix specific, and Python programmers can now program this functionality is a safer way using the signal module.
* Give more detailed error message when the argument count isn't right.Guido van Rossum1997-11-191-4/+6
|
* Fix memory leak in exec statement with code object -- the None returnedGuido van Rossum1997-11-111-2/+4
| | | | | | by PyEval_EvalCode() on success was never DECREF'ed. Fix by Bernhard Herzog.
* Undo half of the previous change :-(Guido van Rossum1997-11-041-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Setting interp->builtins to the __builtin__ module instead of to its dictionary had the unfortunate side effect of always running in restricted execution mode :-( I will check in a different way of setting __main__.__builtins__ to the __builtin__ module later. Also, there was a typo -- a comment was unfinished, and as a result some finalizations were not being executed. In Bart Simpson style, I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes. I Will Not Check In Untested Changes.
* Get rid of another reference to _PyImport_Inittab (now a static array)Guido van Rossum1997-11-041-2/+2
| | | | | that should be PyImport_Inittab (a new pointer initialized to point to the array).
* The warning about thread still having a frame now only happens inGuido van Rossum1997-11-031-1/+1
| | | | verbose mode.
* Two independent changes (alas):Guido van Rossum1997-11-031-19/+16
| | | | | | | | | | | | - The interp->builtins variable (and hence, __main__.__builtins__) is once again initialized to the built-in *module* instead of its dictionary. - The finalization order is once again changed. Signals are finalized relatively early, because (1) it DECREF's the signal handlers, and if a signal handler happens to be a bound method, deleting it could cause problems when there's no current thread around, and (2) we don't want to risk executing signal handlers during finalization.
* 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.
* Some patches to Lee Busby's fpectl mods that accidentally didn't make itGuido van Rossum1997-10-201-2/+1
| | | | into 1.5a4.
* Don't use sscanf(s, "%x", &c) to parse \xX... escapes; hardcode it.Guido van Rossum1997-10-201-3/+10
|
* Shared libraries didn't quite work under AIX because of the change inGuido van Rossum1997-10-101-0/+11
| | | | | status of the GNU readline interface. Here's a patch, by Vladimir Marangozov.
* Moved mac-specific speedup to a different place (Jack)Guido van Rossum1997-10-081-5/+5
|
* Fixed for WITHOUT_COMPLEX compilation (Jack)Guido van Rossum1997-10-081-1/+2
|
* New version of PyErr_NewException() that is compatible with -X option.Guido van Rossum1997-10-031-14/+35
|
* Initialize Py_UseClassExceptionsFlag to 1.Guido van Rossum1997-10-031-1/+1
|
* Remove unreachable "return 1" at end of ensure_fromlist().Guido van Rossum1997-10-031-1/+1
|
* Fix small omission: with all the new code, sys.exit(None) would printGuido van Rossum1997-10-031-0/+2
| | | | "None"; this should be equivalent to sys.exit(0).
* Change PyEval_SaveThread() and PyEval_RestoreThread() to always do theGuido van Rossum1997-09-301-12/+9
| | | | | | tstate swapping. Only the acquiring and releasing of the lock is conditional (twice, under ``#ifdef WITH_THREAD'' and inside ``if (interpreter_lock)'').
* Fix a bug in this code that made it do the wrong thing when an optionGuido van Rossum1997-09-301-1/+4
| | | | was a single '-'. Thanks to Andrew Kuchling.
* PyErr_NormalizeException(): If the exception's type is a class and theBarry Warsaw1997-09-301-0/+8
| | | | | instance's class is a subclass of this, then use the instance's class as the exception type.
* Get DLL version from a variable.Guido van Rossum1997-09-291-1/+3
|
* Release interpreter lock around readline call in [raw_]input().Guido van Rossum1997-09-261-0/+2
|
* Py_Initialize(): move the call to _PyImport_FixupExtension() to afterBarry Warsaw1997-09-181-1/+1
| | | | | the phase 2 init of the __builtin__ module, so that multiple interpreters will get the right exceptions.
* initerrors(): Eliminate circular reference which was causing a smallBarry Warsaw1997-09-181-3/+3
| | | | | | | | | | | | but annoying memory leak. This was introduced when PyExc_Exception was added; the loop above populating the PyExc_StandardError exception tuple started at index 1 in bltin_exc, but PyExc_Exception was added at index 0, so PyExc_StandardError was getting inserted in itself! How else can a tuple include itself?! Change the loop to start at index 2. This was a *fun* one! :-)
* [Py_Exc]NumberError => [Py_Exc]ArithmeticErrorBarry Warsaw1997-09-161-7/+7
|
* PyErr_Print(): When printing a class exception, try to dig out theBarry Warsaw1997-09-161-6/+21
| | | | | __module__ string and if found, print <module>.<class>, unless <module> == "exceptions".
* New API PyErr_NewException(name, base, dict) to create simple new exceptions.Guido van Rossum1997-09-161-0/+31
|
* Introduce PyExc_Exception as the conceptual root class for all exceptions.Guido van Rossum1997-09-161-0/+7
|
* 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!
* Fixed some details of printing the str() of an exception. This fixesGuido van Rossum1997-09-051-2/+6
| | | | | a core dump when __str__() returns a non-string, and plugs a memory leak as well: the result of PyObject_Str() was never DECREFed.
* First part of package support.Guido van Rossum1997-09-055-148/+460
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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!
* Inline PyObject_CallObject (Marc-Andre Lemburg).Guido van Rossum1997-08-301-0/+5
|
* Two independent changes (oops):Guido van Rossum1997-08-291-4/+35
| | | | | | | | | - Changed semantics for initialized flag (again); forget the ref counting, forget the fatal errors -- redundant calls to Py_Initialize() or Py_Finalize() calls are simply ignored. - Automatically import site.py on initialization, unless a flag is set not to do this by main().
* Removed obsolete exception PyExc_AccessError.Barry Warsaw1997-08-291-43/+171
| | | | | | | | | | | | | | | | | | | | | Added PyErr_MemoryErrorInst to hold the pre-instantiated instance when using class based exceptions. Simplified the creation of all built-in exceptions, both class based and string based. Actually, for class based exceptions, the string ones are still created just in case there's a problem creating the class based ones (so you still get *some* exception handling!). Now the init and fini functions run through a list of structure elements, creating the strings (and optionally classes) for every entry. initerrors(): the new base class exceptions StandardError, LookupError, and NumberError are initialized when using string exceptions, to tuples containing the list of derived string exceptions. This GvR trick enables forward compatibility! One bit of nastiness is that the C code has to know the inheritance tree embodied in exceptions.py. Added the two phase init and fini functions.
* Added Py_UseClassExceptionsFlag, the variable containing the state ofBarry Warsaw1997-08-291-5/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the -X command line option. Py_Initialize(): Handle the two phase initialization of the built-in module. Py_Finalize(): Handle the two phase finalization of the built-in module. parse_syntax_error(): New function which parses syntax errors that PyErr_Print() will catch. This correctly parses such errors regardless of whether PyExc_SyntaxError is an old-style string exception or new-fangled class exception. PyErr_Print(): Many changes: 1. Normalize the exception. 2. Handle SystemExit exceptions which might be class based. Digs the exit code out of the "code" attribute. String based SystemExit is handled the same as before. 3. Handle SyntaxError exceptions which might be class based. Digs the various information bits out of the instance's attributes (see parse_syntax_error() for details). String based SyntaxError still works too. 4. Don't write the `:' after the exception if the exception is class based and has an empty string str() value.
* PyErr_NoMemory(): If the pre-instantiated memory exception is non-nullBarry Warsaw1997-08-291-1/+9
| | | | | | (PyExc_MemoryErrorInst) raise this instead of PyExc_MemoryError. This only happens when exception classes are enabled (e.g. when Python is started with -X).
* Cprrect stuoid tyops -- was comparing variabes with themselves becauseGuido van Rossum1997-08-291-3/+3
| | | | of co/cp mixup.