Raymond Hettinger
06d8cf8ceb
Improve variable names.
2005-07-31 15:36:06 +00:00
Raymond Hettinger
9dcb17cb1a
Fix frozenset() ref count and a comment typo.
2005-07-31 13:09:28 +00:00
Raymond Hettinger
934d63eb40
Comment on the set_swap_bodies() helper function.
2005-07-31 01:33:10 +00:00
Raymond Hettinger
9f1a6796eb
Revised the set() and frozenset() implementaion to use its own internal
...
data structure instead of using dictionaries. Reduces memory consumption
by 1/3 and provides modest speed-ups for most set operations.
2005-07-31 01:16:36 +00:00
Raymond Hettinger
bb999b5925
SF patch #1200018 : Restore GC support to set objects
...
Reverts 1.26 and 1.27.
And adds cycle testing.
2005-06-18 21:00:26 +00:00
Raymond Hettinger
15056a5202
SF 1062353: set pickling problems
...
Support automatic pickling of dictionaries in instance of set subclasses.
2004-11-09 07:25:31 +00:00
Raymond Hettinger
6429a4727e
Use Py_CLEAR(). Add unrelated test.
2004-09-28 01:51:35 +00:00
Nicholas Bastin
9ba301e589
Moved SunPro warning suppression into pyport.h and out of individual
...
modules and objects.
2004-07-15 15:54:05 +00:00
Nicholas Bastin
1ce9e4cfc1
Fixed end-of-loop code not reached warning when using SunPro C
2004-06-17 18:27:18 +00:00
Raymond Hettinger
148a63f1fc
Remove a function no longer in use.
2004-06-14 04:24:41 +00:00
Raymond Hettinger
47edb4b09c
Remove unnecessary GC support. Sets cannot have cycles.
2004-06-13 08:20:46 +00:00
Raymond Hettinger
c978633ec6
Futher improvements to frozenset hashing (based on Yitz Gale's battery of
...
tests which nicely highly highlight weaknesses).
* Initial value is now a large prime.
* Pre-multiply by the set length to add one more basis of differentiation.
* Work a bit harder inside the loop to scatter bits from sources that
may have closely spaced hash values.
All of this is necessary to make up for keep the hash function commutative.
Fortunately, the hash value is cached so the call to frozenset_hash() will
only occur once per set.
2004-06-10 22:41:48 +00:00
Raymond Hettinger
27e403ebe9
Fixups to the hash function for frozensets.
...
* Non-zero initial value so that hash(frozenset()) != hash(0).
* Final permutation to differentiate nested sets.
* Add logic to make sure that -1 is not a possible hash value.
2004-06-10 21:38:41 +00:00
Raymond Hettinger
691d80532b
Make sets and deques weak referencable.
2004-05-30 07:26:47 +00:00
Raymond Hettinger
3fd500b4a5
The copy module now handles sets directly. The __copy__ methods are no
...
longer needed.
2004-03-08 18:31:10 +00:00
Raymond Hettinger
a3b11e7fb3
* Simplify and speedup logic for tp_print.
...
* Speed-up intersection whenever PyDict_Next can be used.
2003-12-31 14:08:58 +00:00
Raymond Hettinger
81ad32e435
Speedup set.update by using the override mode for PyDict_Merge().
2003-12-15 21:16:06 +00:00
Raymond Hettinger
fb4e33a8e2
Improve algorithm for set.difference when the input is not a set.
2003-12-15 13:23:55 +00:00
Raymond Hettinger
438e02dfc8
* Refactor set.__contains__()
...
* Use Py_RETURN_NONE everywhere.
* Fix-up the firstpass check for the tp_print slot.
2003-12-13 19:38:47 +00:00
Raymond Hettinger
0deab62704
Refactor set.discard() and set.remove().
2003-12-13 18:53:18 +00:00
Raymond Hettinger
dc5ae11abf
Use dictionary specific looping idiom where possible.
...
Simplifies and speeds-up the code.
2003-12-13 14:46:46 +00:00
Raymond Hettinger
8f5cdaa784
* Added a new method flag, METH_COEXIST.
...
* Used the flag to optimize set.__contains__(), dict.__contains__(),
dict.__getitem__(), and list.__getitem__().
2003-12-13 11:26:12 +00:00
Raymond Hettinger
bc0f2ab9bb
Expose dict_contains() and PyDict_Contains() with is about 10% faster
...
than PySequence_Contains() and more clearly applicable to dicts.
Apply the new function in setobject.c where __contains__ checking is
ubiquitous.
2003-11-25 21:12:14 +00:00
Raymond Hettinger
a38123e2fa
Factor out more duplicate code.
2003-11-24 22:18:49 +00:00
Guido van Rossum
5f4e45d66f
Stop GCC warning about int literal that's so long that it becomes an
...
unsigned int (on a 32-bit machine), by adding an explicit 'u' to the
literal (a prime used to improve the hash function for frozenset).
2003-11-24 04:13:13 +00:00
Raymond Hettinger
f5f41bf087
* Checkin remaining documentation
...
* Add more tests
* Refactor and neaten the code a bit.
* Rename union_update() to update().
* Improve the algorithms (making them a closer to sets.py).
2003-11-24 02:57:33 +00:00
Raymond Hettinger
49ba4c39c4
* Simplify hash function and add test to show effectiveness of the hash
...
function.
* Add a better test for deepcopying.
* Add tests to show the __init__() function works like it does for list
and tuple. Add related test.
* Have shallow copies of frozensets return self. Add related test.
* Have frozenset(f) return f if f is already a frozenset. Add related test.
* Beefed-up some existing tests.
2003-11-23 02:49:05 +00:00
Raymond Hettinger
bfd334a42d
Extend temporary hashability to remove() and discard().
...
Brings the functionality back in line with sets.py.
2003-11-22 03:55:23 +00:00
Raymond Hettinger
19c2d77842
Allow temporary hashability for the __contains__ test.
...
(Requested by Alex Martelli.)
2003-11-21 18:36:54 +00:00
Raymond Hettinger
3fbec701ca
issubset() and issuperset() to work with general iterables
2003-11-21 07:56:36 +00:00
Raymond Hettinger
82d73dd459
Three minor performance improvements:
...
* Improve the hash function to increase the chance that distinct sets will
have distinct xor'd hash totals.
* Use PyDict_Merge where possible (it is faster than an equivalent iter/set
pair).
* Don't rebuild dictionaries where the input already has one.
2003-11-20 22:54:33 +00:00
Guido van Rossum
b61982bacb
Implement straightforward suggestions from gcc warnings (remove unused
...
variable, add extra braces).
2003-11-18 19:27:19 +00:00
Raymond Hettinger
1b92fd5bca
Use PySequence_Contains() instead of direct access macro.
2003-11-18 14:15:31 +00:00
Raymond Hettinger
50a4bb325c
Various fixups (most suggested by Armin Rigo).
2003-11-17 16:42:33 +00:00
Raymond Hettinger
e2c277a69f
Fix output spacing typo
2003-11-16 16:36:58 +00:00
Raymond Hettinger
a690a9967e
* Migrate set() and frozenset() from the sandbox.
...
* Install the unittests, docs, newsitem, include file, and makefile update.
* Exercise the new functions whereever sets.py was being used.
Includes the docs for libfuncs.tex. Separate docs for the types are
forthcoming.
2003-11-16 16:17:49 +00:00