summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Get rid of the superstitious "~" in dict hashing's "i = (~hash) & mask".Tim Peters2001-05-1311-46/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The comment following used to say: /* We use ~hash instead of hash, as degenerate hash functions, such as for ints <sigh>, can have lots of leading zeros. It's not really a performance risk, but better safe than sorry. 12-Dec-00 tim: so ~hash produces lots of leading ones instead -- what's the gain? */ That is, there was never a good reason for doing it. And to the contrary, as explained on Python-Dev last December, it tended to make the *sum* (i + incr) & mask (which is the first table index examined in case of collison) the same "too often" across distinct hashes. Changing to the simpler "i = hash & mask" reduced the number of string-dict collisions (== # number of times we go around the lookup for-loop) from about 6 million to 5 million during a full run of the test suite (these are approximate because the test suite does some random stuff from run to run). The number of collisions in non-string dicts also decreased, but not as dramatically. Note that this may, for a given dict, change the order (wrt previous releases) of entries exposed by .keys(), .values() and .items(). A number of std tests suffered bogus failures as a result. For dicts keyed by small ints, or (less so) by characters, the order is much more likely to be in increasing order of key now; e.g., >>> d = {} >>> for i in range(10): ... d[i] = i ... >>> d {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} >>> Unfortunately. people may latch on to that in small examples and draw a bogus conclusion. test_support.py Moved test_extcall's sortdict() into test_support, made it stronger, and imported sortdict into other std tests that needed it. test_unicode.py Excluced cp875 from the "roundtrip over range(128)" test, because cp875 doesn't have a well-defined inverse for unicode("?", "cp875"). See Python-Dev for excruciating details. Cookie.py Chaged various output functions to sort dicts before building strings from them. test_extcall Fiddled the expected-result file. This remains sensitive to native dict ordering, because, e.g., if there are multiple errors in a keyword-arg dict (and test_extcall sets up many cases like that), the specific error Python complains about first depends on native dict ordering.
* Got the first MacPython module working under MacOSX/MachO (gestalt). Main ↵Jack Jansen2001-05-123-54/+55
| | | | | | | | changes are including Carbon/Carbon.h in stead of the old headers (unless WITHOUT_FRAMEWORKS is defined, as it will be for classic MacPython) and selectively disabling all the stuff that is unneeded in a unix-Python (event handling, etc).
* Be more sensible about when to use TARGET_API_MAC_OS8 in stead of ↵Jack Jansen2001-05-124-23/+26
| | | | !TARGET_API_MAC_CARBON. This should greatly facilitate porting stuff to OSX in its MachO/BSD incarnation.
* Added iterobject.c to the project. And trying my first checkin at the same time.Jack Jansen2001-05-125-0/+22
|
* Repair "module has no attribute xxx" error msg; bug introduced whenTim Peters2001-05-121-1/+1
| | | | switching from tp_getattr to tp_getattro.
* Refactored, with some future plans in mind.Guido van Rossum2001-05-121-11/+23
| | | | This now uses the new gotofileline() method defined in FileList.py.
* Move the action of loading the configuration to the IdleConf moduleGuido van Rossum2001-05-122-8/+1
| | | | | | rather than the idle.py script. This has advantages and disadvantages; the biggest advantage being that we can more easily have an alternative main program.
* Delete goodname() method, which is unused.Guido van Rossum2001-05-121-11/+7
| | | | | | | Add gotofileline(), a convenience method which I intend to use in a variant. Rename test() to _test().
* Variant of patch #423262: Change module attribute get & setTim Peters2001-05-112-34/+38
| | | | | | Allow module getattr and setattr to exploit string interning, via the previously null module object tp_getattro and tp_setattro slots. Yields a very nice speedup for things like random.random and os.path etc.
* Fix a minor style consistency issue.Fred Drake2001-05-111-3/+3
| | | | | | When getting a string buffer for a string we just created, use PyString_AS_STRING() instead of PyString_AsString() to avoid the call overhead and extra type check.
* Fix one bare except: clause.Fred Drake2001-05-111-1/+1
|
* [].index() raises ValueError if the value is not in the list, so onlyFred Drake2001-05-111-1/+1
| | | | catch that instead of using a bare except clause.
* [].index() raises ValueError if the value is not in the list, so onlyFred Drake2001-05-111-1/+1
| | | | catch that instead of using a bare except clause.
* Only catch NameError and TypeError when attempting to subclass anFred Drake2001-05-111-1/+1
| | | | exception (for compatibility with old versions of Python).
* Remove a bare try/except completely -- it just did not make sense!Fred Drake2001-05-111-12/+12
| | | | Add a comment elsewhere making clear an assumption in the code.
* When guarding an import, only catch ImportError.Fred Drake2001-05-111-1/+1
|
* Clean up a bare except where we only expect to catch pcre.error.Fred Drake2001-05-111-1/+1
|
* Clean up bare except where only IOError makes sense.Fred Drake2001-05-111-1/+1
|
* Clean up bare except: when determining whether a file is seekable.Fred Drake2001-05-111-2/+2
|
* Opening a file for reading can raise IOError, so only catch that.Fred Drake2001-05-111-1/+1
|
* int() of a string is only expected to through ValueError, so do not useFred Drake2001-05-111-2/+2
| | | | a bare except clause.
* <socket>.getsockopt() and <socket>.setsockopt() can only raise socket.error,Fred Drake2001-05-111-1/+1
| | | | so only catch that specific exception.
* Catch only the relevant exceptions instead of using a bare except clause.Fred Drake2001-05-111-1/+1
|
* Add some text to make the dircmp object section more readable, and moveFred Drake2001-05-111-7/+16
| | | | some stuff around.
* Include sys/modem.h if we have it; this is needed on HP-UX to provideFred Drake2001-05-111-0/+12
| | | | | | | | constants used by other macros from the headers. Conditionalize VREPRINT and VDISCARD; these are not available on HP-UX. This closes bug #417418.
* the usual...Fred Drake2001-05-111-3/+3
|
* Add a check for sys/modem.h, needed by termios on HP-UX.Fred Drake2001-05-112-1/+4
|
* --sigh--Fred Drake2001-05-112-3/+3
| | | | | Finish the last set of changes to these files so the conversion does not break.
* Markup adjustments to avoid getting junk in the index.Fred Drake2001-05-111-5/+5
|
* Variant of SF patch 423181Jeremy Hylton2001-05-111-21/+51
| | | | | | | For rich comparisons, use instance_getattr2() when possible to avoid the expense of setting an AttributeError. Also intern the name_op[] table and use the interned strings rather than creating a new string and interning it each time through.
* unlink() would normally be found in the "os" module, so use it from there.Fred Drake2001-05-111-5/+7
| | | | | | | | Remove unused import of "sys". If the file TESTFN exists before we start, try to remove it. Add spaces around the = in some assignments.
* Cosmetic: code under "else" clause was missing indent.Tim Peters2001-05-111-1/+1
|
* Replace "\begin{classdesc}{SomeClass}{\unspecified}" withFred Drake2001-05-112-3/+5
| | | | | "\begin{classdesc*}{SomeClass}" -- the rendering of \unspecified was identical to \moreargs, so this helps clarify things just a little.
* Document the new classdesc* environment, and the previously undocumentedFred Drake2001-05-111-1/+18
| | | | excclassdesc environment.
* Define a new environment, classdesc*, which can be used to document aFred Drake2001-05-112-0/+23
| | | | | | class without providing any information about the constructor. This should be used for classes which only exist to act as containers rather than as factories for instances.
* Write a better synopsis for the Scrap module, and provide a link toFred Drake2001-05-101-1/+9
| | | | useful documentation on the Scrap Manager.
* Actually include a synopsis line for the ColorPicker module.Fred Drake2001-05-101-1/+1
|
* Restore dicts' tp_compare slot, and change dict_richcompare to say itTim Peters2001-05-101-15/+3
| | | | | | | | | | | | | | | | | | | | doesn't know how to do LE, LT, GE, GT. dict_richcompare can't do the latter any faster than dict_compare can. More importantly, for cmp(dict1, dict2), Python *first* tries rich compares with EQ, LT, and GT one at a time, even if the tp_compare slot is defined, and dict_richcompare called dict_compare for the latter two because it couldn't do them itself. The result was a lot of wasted calls to dict_compare. Now dict_richcompare gives up at once the times Python calls it with LT and GT from try_rich_to_3way_compare(), and dict_compare is called only once (when Python gets around to trying the tp_compare slot). Continued mystery: despite that this cut the number of calls to dict_compare approximately in half in test_mutants.py, the latter still runs amazingly slowly. Running under the debugger doesn't show excessive activity in the dict comparison code anymore, so I'm guessing the culprit is somewhere else -- but where? Perhaps in the element (key/value) comparison code? We clearly spend a lot of time figuring out how to compare things.
* Make test_mutants stronger by also adding random keys during comparisons.Tim Peters2001-05-101-2/+17
| | | | | | | | A Mystery: test_mutants ran amazingly slowly even before dictobject.c "got fixed". I don't have a clue as to why. dict comparison was and remains linear-time in the size of the dicts, and test_mutants only tries 100 dict pairs, of size averaging just 50. So "it should" run in less than an eyeblink; but it takes at least a second on this 800MHz box.
* Change test_mmap.py to use test_support.TESTFN instead of hardcoded "foo",Tim Peters2001-05-101-108/+119
| | | | | and wrap the body in try/finally to ensure TESTFN gets cleaned up no matter what.
* Repair typos in comments.Tim Peters2001-05-101-4/+4
|
* Repair typo in comment.Tim Peters2001-05-101-1/+1
|
* Change some text just a little to avoid font-lock hell.Fred Drake2001-05-101-1/+1
|
* Fix typo in weakref.proxy() documentation.Fred Drake2001-05-101-1/+1
| | | | This closes SF bug #423087.
* Extend the weakref test suite to cover the complete mapping interface forFred Drake2001-05-101-4/+61
| | | | | | both weakref.Weak*Dictionary classes. This closes SF bug #416480.
* Update example to no longer use the FCNTL module.Fred Drake2001-05-101-2/+2
|
* Fix the fcntl() docstring so the user is not mis-directed to the FCNTLFred Drake2001-05-101-7/+7
| | | | module for useful constants.
* Do no regenerate modules that should no longer be here.Fred Drake2001-05-103-11/+0
|
* Remove all remaining uses of the FCNTL module from the standard library.Fred Drake2001-05-103-30/+29
|
* Fix typo reported by David Goodger. This closes SF patch #422383.Fred Drake2001-05-101-1/+1
|