Commit Graph

32273 Commits

Author SHA1 Message Date
Raymond Hettinger 94fedf9bfd Expand the API notes. 2005-08-17 12:23:45 +00:00
Raymond Hettinger 0c230b9dac Note that the PyNumber protocol can access most set methods directly. 2005-08-17 10:05:22 +00:00
Raymond Hettinger f81e45023e Fix nits. 2005-08-17 02:19:36 +00:00
Raymond Hettinger f408ddf4a0 Results of a line-by-line comparison back to dictobject.c.
* set_merge() cannot assume that the table doesn't resize during iteration.

* convert some unnecessary tests to asserts -- they were necessary in
  dictobject.c because PyDict_Next() is a public function.  The same is
  not true for set_next().

* re-arrange the order of functions to more closely match the order
  in dictobject.c.  This makes it must easier to compare the two
  and ought to simplify any issues of maintaining both.
2005-08-17 00:27:42 +00:00
Raymond Hettinger c47e01d020 Numerous fix-ups to C API and docs. Added tests for C API. 2005-08-16 10:44:15 +00:00
Raymond Hettinger 994c2c1c69 DECREF --> XDECREF 2005-08-16 03:54:11 +00:00
Raymond Hettinger beb3101b05 Add a C API for sets and frozensets. 2005-08-16 03:47:52 +00:00
Barry Warsaw e2eca0b709 Port from the Python 2.4 branch, patches for SF bug # 900092,
hotshot.stats.load.
2005-08-15 18:14:19 +00:00
Martin v. Löwis f09582eeda Correct definition of ST_GEN_IDX. 2005-08-14 21:42:34 +00:00
Raymond Hettinger ce8185e642 More function re-ordering (placing like functions together). 2005-08-13 09:28:48 +00:00
Raymond Hettinger ed6c1ef8c3 * Bring lookkey() and lookkey_string() closer to dict version.
* Use set_next() for looping in issubset() and frozenset_hash().
* Re-order the presentation of cmp and hash functions.
2005-08-13 08:28:03 +00:00
Phillip J. Eby 00148226df Fix a too-aggressive assert (see SF#1257960). Previously, gen_iternext
was never called during interpreter shutdown GC, so the f_back!=NULL
assertion was correct.  Now that generators get close()d during GC,
the assertion was being triggered because the generator close() was being
called as the top-level frame.  However, nothing actually is broken by
this; it's just that the condition was unexpected in previous Python
versions.
2005-08-13 03:29:00 +00:00
Raymond Hettinger 038ca2a551 Teach the sets module to correctly compute s-=s and s^=s as the empty set. 2005-08-13 02:29:58 +00:00
Neil Schemenauer f98e6b15ba Fix pystack command. 2005-08-13 00:28:41 +00:00
Raymond Hettinger 97979ddc14 * Fix SF #1257731. Make __contains__(), remove(), and discard() only do
a frozenset conversion when the initial search attempt fails with a
  TypeError and the key is some type of set.  Add a testcase.

* Eliminate a duplicate if-stmt.
2005-08-12 23:58:22 +00:00
Raymond Hettinger b02c35e208 * Fix SF #1257731. Make __contains__(), remove(), and discard() only do
a frozenset conversion when the initial search attempt fails with a
  TypeError and the key is some type of set.  Add a testcase.

* Eliminate a duplicate if-stmt.
2005-08-12 20:48:39 +00:00
Neil Schemenauer cf52c07843 Change the %s format specifier for str objects so that it returns a
unicode instance if the argument is not an instance of basestring and
calling __str__ on the argument returns a unicode instance.
2005-08-12 17:34:58 +00:00
Andrew M. Kuchling ba7d95e215 Document 'istext' parameter 2005-08-12 14:02:32 +00:00
Raymond Hettinger c991db240c * Add short-circuit code for in-place operations with self (such as
s|=s, s&=s, s-=s, or s^=s).  Add related tests.

* Improve names for several variables and functions.

* Provide alternate table access functions (next, contains, add, and discard)
  that work with an entry argument instead of just a key.  This improves
  set-vs-set operations because we already have a hash value for each key
  and can avoid unnecessary calls to PyObject_Hash().  Provides a 5% to 20%
  speed-up for quick hashing elements like strings and integers.  Provides
  much more substantial improvements for slow hashing elements like tuples
  or objects defining a custom __hash__() function.

* Have difference operations resize() when 1/5 of the elements are dummies.
  Formerly, it was 1/6.  The new ratio triggers less frequently and only
  in cases that it can resize quicker and with greater benefit.  The right
  answer is probably either 1/4, 1/5, or 1/6.  Picked the middle value for
  an even trade-off between resize time and the space/time costs of dummy
  entries.
2005-08-11 07:58:45 +00:00
Fred Drake 9f3ae3e69d fix minor markup errors 2005-08-09 15:24:05 +00:00
Martin v. Löwis ebd9d5ba1a Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
add st_gen, st_birthtime.
2005-08-09 15:00:59 +00:00
Martin v. Löwis 147fbe5a55 Patch #1239112: Correct LINKCC C++ test. Fixes #1189330.
Backported to 2.4.
2005-08-07 21:09:30 +00:00
Martin v. Löwis b813c53cd8 Patch #827386: Support absolute source paths in msvccompiler.py.
Backported to 2.4.
2005-08-07 20:51:04 +00:00
Raymond Hettinger bc841a1464 * Bring in INIT_NONZERO_SET_SLOTS macro from dictionary code.
* Bring in free list from dictionary code.
* Improve several comments.
* Differencing can leave many dummy entries.  If more than
  1/6 are dummies, then resize them away.
* Factor-out common code with new macro, PyAnySet_CheckExact.
2005-08-07 13:02:53 +00:00
Tim Peters e9fe7e0ef3 Whitespace normalization (ran reindent.py over the whole tree). 2005-08-07 03:04:58 +00:00
Tim Peters 752a047fca Removed XXX block about a test_bsddb3 failure that went away a long time ago. 2005-08-07 02:47:59 +00:00
Tim Peters 63db628ad3 Update some Python version numbers. 2005-08-07 02:47:12 +00:00
Raymond Hettinger 99220fabb1 * Removed checked_error flag which no longer provides any benefit.
* Have issubset() control its own loop instead of using set_next_internal().
2005-08-06 18:57:13 +00:00
Raymond Hettinger 5ba0cbe392 * set_new() doesn't need to zero the structure a second time after tp_alloc
has already done the job.
* Use a macro form of PyErr_Occurred() inside the set_lookkey() function.
2005-08-06 18:31:24 +00:00
Raymond Hettinger fe889f3c62 Factor away a redundant clear() function. 2005-08-06 05:43:39 +00:00
Georg Brandl 2772c679e9 bug [ 1252706 ] poplib list() docstring fix (and docs too) 2005-08-05 21:01:58 +00:00
Raymond Hettinger a580c47c6d * Improve a variable name: entry0 --> table.
* Give set_lookkey_string() a fast alternate path when no dummy entries
  are present.
* Have set_swap_bodies() reset the hash field to -1 whenever either of
  bodies is not a frozenset.  Maintains the invariant of regular sets
  always having -1 in the hash field; otherwise, any mutation would make
  the hash value invalid.
* Use an entry pointer to simplify the code in frozenset_hash().
2005-08-05 17:19:54 +00:00
Raymond Hettinger a9d9936d10 * Move copyright notice to top and indicate derivation from sets.py and
dictobject.c.
* Have frozenset_hash() use entry->hash instead of re-computing each
  individual hash with PyObject_Hash(o);
* Finalize the dummy entry before a system exit.
2005-08-05 00:01:15 +00:00
Tim Peters ea9dcdc062 com_yield_expr(): Squash new compiler wng about unreferenced local. 2005-08-03 18:33:05 +00:00
Walter Dörwald 4e41a4b64c Disable a few other tests, that can't work if Python is compiled without
Unicode support.
2005-08-03 17:09:04 +00:00
Georg Brandl 649f8e7de2 patch [ 1105730 ] Faster commonprefix in macpath, ntpath, etc. 2005-08-03 07:30:12 +00:00
Georg Brandl b370059233 bug [ 1250306 ] incorrect description of range function 2005-08-03 07:17:33 +00:00
Andrew M. Kuchling 6af7fe0563 Add example 2005-08-02 17:20:36 +00:00
Andrew M. Kuchling a2e21cb945 Add note 2005-08-02 17:13:21 +00:00
Georg Brandl f13c4ba11b [ 1243192 ] Incorrect documentation of re.UNICODE 2005-08-02 10:28:08 +00:00
Raymond Hettinger 67962ab1bb Model set.pop() after dict.popitem(). 2005-08-02 03:45:16 +00:00
Skip Montanaro 6a694508ae Minor tweak as a side effect of fixing #1243553. The Unicode name for " is
'quotation mark', so I decided to use it instead of 'double-quote'.
2005-08-02 02:53:59 +00:00
Skip Montanaro 97b2fa229c Bring cgi.escape docstring slightly more in line with the library ref
manual.  Closes #1243553.
2005-08-02 02:50:25 +00:00
Phillip J. Eby 0d6615fd29 PEP 342 implementation. Per Guido's comments, the generator throw()
method still needs to support string exceptions, and allow None for the
third argument.  Documentation updates are needed, too.
2005-08-02 00:46:46 +00:00
Raymond Hettinger d794666048 * Improve code for the empty frozenset singleton:
- Handle both frozenset() and frozenset([]).
  - Do not use singleton for frozenset subclasses.
  - Finalize the singleton.
  - Add test cases.
* Factor-out set_update_internal() from set_update().  Simplifies the
  code for several internal callers.
* Factor constant expressions out of loop in set_merge_internal().
* Minor comment touch-ups.
2005-08-01 21:39:29 +00:00
Hye-Shik Chang e295676c87 Fix build on gcc: PySetIter_Type should be static in definition
part also.
2005-08-01 05:26:41 +00:00
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