]> granicus.if.org Git - python/log
python
18 years agostruct: modulo math plus warning on all endian-explicit formats for compatibility...
Bob Ippolito [Mon, 29 May 2006 22:55:48 +0000 (22:55 +0000)]
struct: modulo math plus warning on all endian-explicit formats for compatibility with older struct usage (ugly)

18 years agofixed "abc".count("", 100) == -96 error (hopefully, nobody's relying on
Fredrik Lundh [Mon, 29 May 2006 22:42:07 +0000 (22:42 +0000)]
fixed "abc".count("", 100) == -96 error (hopefully, nobody's relying on
the current behaviour ;-)

18 years agoWhoops.
Georg Brandl [Mon, 29 May 2006 22:00:30 +0000 (22:00 +0000)]
Whoops.

18 years agoConvert more modules to METH_VARARGS.
Georg Brandl [Mon, 29 May 2006 21:58:42 +0000 (21:58 +0000)]
Convert more modules to METH_VARARGS.

18 years agoMake use of METH_O and METH_NOARGS where possible.
Georg Brandl [Mon, 29 May 2006 21:04:52 +0000 (21:04 +0000)]
Make use of METH_O and METH_NOARGS where possible.
Use Py_UnpackTuple instead of PyArg_ParseTuple where possible.

18 years agoAdd News entry for last commit.
Georg Brandl [Mon, 29 May 2006 20:57:01 +0000 (20:57 +0000)]
Add News entry for last commit.

18 years agoPatches #1497027 and #972322: try HTTP digest auth first,
Georg Brandl [Mon, 29 May 2006 20:52:54 +0000 (20:52 +0000)]
Patches #1497027 and #972322: try HTTP digest auth first,
and watch out for handler name collisions.

18 years agoWhen adding a module like functools, it helps to let SVN know about the file.
Nick Coghlan [Mon, 29 May 2006 20:27:44 +0000 (20:27 +0000)]
When adding a module like functools, it helps to let SVN know about the file.

18 years agoCorrect some value converting strangenesses.
Georg Brandl [Mon, 29 May 2006 19:39:45 +0000 (19:39 +0000)]
Correct some value converting strangenesses.

18 years agoSilence a warning.
Armin Rigo [Mon, 29 May 2006 17:59:47 +0000 (17:59 +0000)]
Silence a warning.

18 years agosimplify the struct code a bit (no functional changes)
Bob Ippolito [Mon, 29 May 2006 15:47:29 +0000 (15:47 +0000)]
simplify the struct code a bit (no functional changes)

18 years agoFix #1494787 (pyclbr counts whitespace as superclass name)
Georg Brandl [Mon, 29 May 2006 14:39:00 +0000 (14:39 +0000)]
Fix #1494787 (pyclbr counts whitespace as superclass name)

18 years agoFix compiler warning.
Georg Brandl [Mon, 29 May 2006 14:33:55 +0000 (14:33 +0000)]
Fix compiler warning.

18 years agoHandle PyMem_Malloc failure in pystrtod.c. Closes #1494671.
Georg Brandl [Mon, 29 May 2006 14:28:05 +0000 (14:28 +0000)]
Handle PyMem_Malloc failure in pystrtod.c. Closes #1494671.

18 years agoFix #1494605.
Georg Brandl [Mon, 29 May 2006 14:13:21 +0000 (14:13 +0000)]
Fix #1494605.

18 years agoConvert fmmodule to METH_VARARGS.
Georg Brandl [Mon, 29 May 2006 13:53:16 +0000 (13:53 +0000)]
Convert fmmodule to METH_VARARGS.

18 years agoApply modified version of Collin Winter's patch #1478788
Nick Coghlan [Mon, 29 May 2006 12:43:05 +0000 (12:43 +0000)]
Apply modified version of Collin Winter's patch #1478788

Renames functional extension module to _functools and adds a Python
functools module so that utility functions like update_wrapper can be
added easily.

18 years agoFix refleak in socketmodule. Replace bogus Py_BuildValue calls.
Georg Brandl [Mon, 29 May 2006 09:46:51 +0000 (09:46 +0000)]
Fix refleak in socketmodule. Replace bogus Py_BuildValue calls.
Fix refleak in exceptions.

18 years agoMETH_NOARGS functions do get called with two args.
Georg Brandl [Sun, 28 May 2006 22:38:57 +0000 (22:38 +0000)]
METH_NOARGS functions do get called with two args.

18 years agoConvert audioop over to METH_VARARGS.
Georg Brandl [Sun, 28 May 2006 22:34:51 +0000 (22:34 +0000)]
Convert audioop over to METH_VARARGS.

18 years agoFix C function calling conventions in _sre module.
Georg Brandl [Sun, 28 May 2006 22:14:04 +0000 (22:14 +0000)]
Fix C function calling conventions in _sre module.

18 years agoA clearer error message when passing -R to regrtest.py with
Armin Rigo [Sun, 28 May 2006 22:07:08 +0000 (22:07 +0000)]
A clearer error message when passing -R to regrtest.py with
release builds of Python.

18 years agoCorrect None refcount issue in Mac modules. (Are they
Georg Brandl [Sun, 28 May 2006 21:57:35 +0000 (21:57 +0000)]
Correct None refcount issue in Mac modules. (Are they
still used?)

18 years agoFix ref-antileak in _struct.c which eventually lead to deallocating None.
Georg Brandl [Sun, 28 May 2006 21:42:54 +0000 (21:42 +0000)]
Fix ref-antileak in _struct.c which eventually lead to deallocating None.

18 years agoMake last patch valid C89 so Windows compilers can deal with it.
Thomas Wouters [Sun, 28 May 2006 21:32:12 +0000 (21:32 +0000)]
Make last patch valid C89 so Windows compilers can deal with it.

18 years agouse the UnicodeError traversal and clearing functions in UnicodeError
Michael W. Hudson [Sun, 28 May 2006 21:19:03 +0000 (21:19 +0000)]
use the UnicodeError traversal and clearing functions in UnicodeError
subclasses.

18 years agoFix refleaks in UnicodeError get and set methods.
Georg Brandl [Sun, 28 May 2006 20:57:09 +0000 (20:57 +0000)]
Fix refleaks in UnicodeError get and set methods.

18 years agoPatch #1496206: urllib2 PasswordMgr ./. default ports
Georg Brandl [Sun, 28 May 2006 20:23:12 +0000 (20:23 +0000)]
Patch #1496206: urllib2 PasswordMgr ./. default ports

18 years agoThe empty string is a valid import path.
Georg Brandl [Sun, 28 May 2006 20:11:45 +0000 (20:11 +0000)]
The empty string is a valid import path.
 (fixes #1496539)

18 years ago("Forward-port" of r46506)
Armin Rigo [Sun, 28 May 2006 19:13:17 +0000 (19:13 +0000)]
("Forward-port" of r46506)

Remove various dependencies on dictionary order in the standard library
tests, and one (clearly an oversight, potentially critical) in the
standard library itself - base64.py.

Remaining open issues:
 * test_extcall is an output test, messy to make robust
 * tarfile.py has a potential bug here, but I'm not familiar
   enough with this code.  Filed in as SF bug #1496501.
 * urllib2.HTTPPasswordMgr() returns a random result if there is more
   than one matching root path.  I'm asking python-dev for
   clarification...

18 years agoInitial version of systimes - a module to provide platform dependent
Marc-André Lemburg [Sun, 28 May 2006 17:46:58 +0000 (17:46 +0000)]
Initial version of systimes - a module to provide platform dependent
performance measurements.

The module is currently just a proof-of-concept implementation, but
will integrated into pybench once it is stable enough.

License: pybench license.
Author: Marc-Andre Lemburg.

18 years agoQuality control, meet exceptions.c, round two.
Michael W. Hudson [Sun, 28 May 2006 17:40:29 +0000 (17:40 +0000)]
Quality control, meet exceptions.c, round two.

Make some functions that should have been static static.

Fix a bunch of refleaks by fixing the definition of
MiddlingExtendsException.

Remove all the __new__ implementations apart from
BaseException_new.  Rewrite most code that needs it to cope with
NULL fields (such code could get excercised anyway, the
__new__-removal just makes it more likely).  This involved
editing the code for WindowsError, which I can't test.

This fixes all the refleaks in at least the start of a regrtest
-R :: run.

18 years agoRest of patch #1490384: Commit icon source, remove
Martin v. Löwis [Sun, 28 May 2006 16:57:38 +0000 (16:57 +0000)]
Rest of patch #1490384: Commit icon source, remove
claim that Erik von Blokland is the author of the
installer picture.

18 years agoPatch #1080727: add "encoding" parameter to doctest.DocFileSuite
George Yoshida [Sun, 28 May 2006 16:39:09 +0000 (16:39 +0000)]
Patch #1080727: add "encoding" parameter to doctest.DocFileSuite
Contributed by Bjorn Tillenius.

18 years agoQuality control, meet exceptions.c.
Michael W. Hudson [Sun, 28 May 2006 15:51:40 +0000 (15:51 +0000)]
Quality control, meet exceptions.c.

Fix a number of problems with the need for speed code:

One is doing this sort of thing:

    Py_DECREF(self->field);
    self->field = newval;
    Py_INCREF(self->field);

without being very sure that self->field doesn't start with a
value that has a __del__, because that almost certainly can lead
to segfaults.

As self->args is constrained to be an exact tuple we may as well
exploit this fact consistently.  This leads to quite a lot of
simplification (and, hey, probably better performance).

Add some error checking in places lacking it.

Fix some rather strange indentation in the Unicode code.

Delete some trailing whitespace.

More to come, I haven't fixed all the reference leaks yet...

18 years agoneedforspeed: added Py_MEMCPY macro (currently tuned for Visual C only),
Fredrik Lundh [Sun, 28 May 2006 12:06:46 +0000 (12:06 +0000)]
needforspeed: added Py_MEMCPY macro (currently tuned for Visual C only),
and use it for string copy operations.  this gives a 20% speedup on some
string benchmarks.

18 years agoPyErr_Display(), PyErr_WriteUnraisable(): Coverity found a cut-and-paste
Tim Peters [Sun, 28 May 2006 10:41:29 +0000 (10:41 +0000)]
PyErr_Display(), PyErr_WriteUnraisable():  Coverity found a cut-and-paste
bug in both:  `className` was referenced before being checked for NULL.

18 years agoAdded missing svn:eol-style property to text files.
Tim Peters [Sun, 28 May 2006 01:52:38 +0000 (01:52 +0000)]
Added missing svn:eol-style property to text files.

18 years agofix typo
George Yoshida [Sat, 27 May 2006 17:09:17 +0000 (17:09 +0000)]
fix typo

18 years agoEnd of Ch.3 is now about "with statement".
George Yoshida [Sat, 27 May 2006 16:51:43 +0000 (16:51 +0000)]
End of Ch.3 is now about "with statement".
Avoid obsolescence by directly referring to the section.

18 years agominor markup nits
George Yoshida [Sat, 27 May 2006 16:32:44 +0000 (16:32 +0000)]
minor markup nits

18 years agomove semicolons
Richard Jones [Sat, 27 May 2006 16:15:11 +0000 (16:15 +0000)]
move semicolons

18 years agodoc string additions and tweaks
Richard Jones [Sat, 27 May 2006 16:07:28 +0000 (16:07 +0000)]
doc string additions and tweaks

18 years agofix struct regression on 64-bit platforms
Bob Ippolito [Sat, 27 May 2006 15:53:49 +0000 (15:53 +0000)]
fix struct regression on 64-bit platforms

18 years agoneedforspeed: use PyObject_MALLOC instead of system malloc for small
Jack Diederich [Sat, 27 May 2006 15:44:34 +0000 (15:44 +0000)]
needforspeed: use PyObject_MALLOC instead of system malloc for small
allocations.  Use PyMem_MALLOC for larger (1k+) chunks.  1%-2% speedup.

18 years agoAdd a PCBuild8 build directory for building with Visual Studio .NET 2005. Contains...
Kristján Valur Jónsson [Sat, 27 May 2006 15:41:31 +0000 (15:41 +0000)]
Add a PCBuild8 build directory for building with Visual Studio .NET 2005.  Contains a special project to perform profile guided optimizations on the pythoncore.dll, by instrumenting and running pybench.py

18 years agoneedforspeed: stringlib refactoring: use find_slice for stringobject
Fredrik Lundh [Sat, 27 May 2006 15:26:19 +0000 (15:26 +0000)]
needforspeed: stringlib refactoring: use find_slice for stringobject

18 years agoneedforspeed: stringlib refactoring: changed find_obj to find_slice,
Fredrik Lundh [Sat, 27 May 2006 15:20:22 +0000 (15:20 +0000)]
needforspeed: stringlib refactoring: changed find_obj to find_slice,
to enable use from stringobject

18 years agoneedforspeed: replace improvements, changed to Py_LOCAL_INLINE
Fredrik Lundh [Sat, 27 May 2006 14:58:20 +0000 (14:58 +0000)]
needforspeed: replace improvements, changed to Py_LOCAL_INLINE
where appropriate

18 years agoRemove spurious semicolons after macro invocations.
Georg Brandl [Sat, 27 May 2006 14:41:55 +0000 (14:41 +0000)]
Remove spurious semicolons after macro invocations.

18 years agocleanup - removed trailing whitespace
Andrew Dalke [Sat, 27 May 2006 14:16:40 +0000 (14:16 +0000)]
cleanup - removed trailing whitespace

18 years agoThe cheery optimism of old age.
Tim Peters [Sat, 27 May 2006 14:13:13 +0000 (14:13 +0000)]
The cheery optimism of old age.

18 years agoAlways close BZ2Proxy object. Remove unnecessary struct usage.
Georg Brandl [Sat, 27 May 2006 14:02:03 +0000 (14:02 +0000)]
Always close BZ2Proxy object. Remove unnecessary struct usage.

18 years agocredit where credit is due
Richard Jones [Sat, 27 May 2006 13:50:42 +0000 (13:50 +0000)]
credit where credit is due

18 years agoMention new-style exceptions
Andrew M. Kuchling [Sat, 27 May 2006 13:44:37 +0000 (13:44 +0000)]
Mention new-style exceptions

18 years agoMore random thrashing trying to understand spurious
Tim Peters [Sat, 27 May 2006 12:36:53 +0000 (12:36 +0000)]
More random thrashing trying to understand spurious
Windows failures.  Who's keeping a bz2 file open?

18 years agoAdd news item for new-style exception class branch merge.
Georg Brandl [Sat, 27 May 2006 12:30:25 +0000 (12:30 +0000)]
Add news item for new-style exception class branch merge.

18 years agoConversion of exceptions over from faked-up classes to new-style C types.
Richard Jones [Sat, 27 May 2006 12:29:24 +0000 (12:29 +0000)]
Conversion of exceptions over from faked-up classes to new-style C types.

18 years agoFix up struct docstrings, add struct.pack_to function for symmetry
Bob Ippolito [Sat, 27 May 2006 12:11:36 +0000 (12:11 +0000)]
Fix up struct docstrings, add struct.pack_to function for symmetry

18 years agoRemove the range checking and int usage #defines from _struct and strip out the now...
Bob Ippolito [Sat, 27 May 2006 11:47:12 +0000 (11:47 +0000)]
Remove the range checking and int usage #defines from _struct and strip out the now-dead code

18 years agoAdd Py_LOCAL macros
Andrew M. Kuchling [Sat, 27 May 2006 11:26:33 +0000 (11:26 +0000)]
Add Py_LOCAL macros

18 years agoRevert bogus change committed in 46432 to this file.
Martin v. Löwis [Sat, 27 May 2006 11:07:49 +0000 (11:07 +0000)]
Revert bogus change committed in 46432 to this file.

18 years agofixed typo
Andrew Dalke [Sat, 27 May 2006 11:04:36 +0000 (11:04 +0000)]
fixed typo

18 years agoneedforspeed: backed out the Py_LOCAL-isation of ceval; the massive in-
Fredrik Lundh [Sat, 27 May 2006 10:39:48 +0000 (10:39 +0000)]
needforspeed: backed out the Py_LOCAL-isation of ceval; the massive in-
lining killed performance on certain Intel boxes, and the "aggressive"
macro itself gives most of the benefits on others.

18 years agoneedforspeed: more stringlib refactoring
Fredrik Lundh [Sat, 27 May 2006 10:05:10 +0000 (10:05 +0000)]
needforspeed: more stringlib refactoring

18 years agoExplain why 'consumed' is initialized.
Martin v. Löwis [Sat, 27 May 2006 08:54:29 +0000 (08:54 +0000)]
Explain why 'consumed' is initialized.

18 years agoPatch 1494554: Update numeric properties to Unicode 4.1.
Martin v. Löwis [Sat, 27 May 2006 08:36:52 +0000 (08:36 +0000)]
Patch 1494554: Update numeric properties to Unicode 4.1.

18 years agoFix Coverity warnings.
Neal Norwitz [Sat, 27 May 2006 05:21:30 +0000 (05:21 +0000)]
Fix Coverity warnings.
 - Check the correct variable (str_obj, not str) for NULL
 - sep_len was already verified it wasn't 0

18 years agoFix compiler warning (and whitespace) on Mac OS 10.4. (A lot of this code looked...
Neal Norwitz [Sat, 27 May 2006 05:18:57 +0000 (05:18 +0000)]
Fix compiler warning (and whitespace) on Mac OS 10.4.  (A lot of this code looked duplicated, I wonder if a utility function could help reduce the duplication here.)

18 years agoReinstate new-style object tests.
Steve Holden [Sat, 27 May 2006 00:51:52 +0000 (00:51 +0000)]
Reinstate new-style object tests.

18 years agoPatch 1145039.
Tim Peters [Fri, 26 May 2006 23:14:37 +0000 (23:14 +0000)]
Patch 1145039.

set_exc_info(), reset_exc_info():  By exploiting the
likely (who knows?) invariant that when an exception's
`type` is NULL, its `value` and `traceback` are also NULL,
save some cycles in heavily-executed code.

This is a "a kronar saved is a kronar earned" patch:  the
speedup isn't reliably measurable, but it obviously does
reduce the operation count in the normal (no exception
raised) path through PyEval_EvalFrameEx().

The tim-exc_sanity branch tries to push this harder, but
is still blowing up (at least in part due to pre-existing
subtle bugs that appear to have no other visible
consequences!).

Not a bugfix candidate.

18 years agoAdded description of why splitlines doesn't use the prealloc strategy
Andrew Dalke [Fri, 26 May 2006 22:49:03 +0000 (22:49 +0000)]
Added description of why splitlines doesn't use the prealloc strategy

18 years agoBlasted typos ...
Steve Holden [Fri, 26 May 2006 22:39:27 +0000 (22:39 +0000)]
Blasted typos ...

18 years agoUpdate help text and documentaition.
Steve Holden [Fri, 26 May 2006 22:33:20 +0000 (22:33 +0000)]
Update help text and documentaition.

18 years agoAdd Richard Tew to developers
Steve Holden [Fri, 26 May 2006 22:17:54 +0000 (22:17 +0000)]
Add Richard Tew to developers

18 years agoWhitespace normalization.
Tim Peters [Fri, 26 May 2006 21:51:13 +0000 (21:51 +0000)]
Whitespace normalization.

18 years agoRecord Iceland sprint attendees.
Tim Peters [Fri, 26 May 2006 20:56:56 +0000 (20:56 +0000)]
Record Iceland sprint attendees.

18 years agoenable all of the struct tests, use ssize_t, fix some whitespace
Bob Ippolito [Fri, 26 May 2006 20:25:23 +0000 (20:25 +0000)]
enable all of the struct tests, use ssize_t, fix some whitespace

18 years agoAdded limits to the replace code so it does not count all of the matching
Andrew Dalke [Fri, 26 May 2006 20:25:22 +0000 (20:25 +0000)]
Added limits to the replace code so it does not count all of the matching
patterns in a string, only the number needed by the max limit.

18 years agoSimplify calling.
Georg Brandl [Fri, 26 May 2006 20:22:50 +0000 (20:22 +0000)]
Simplify calling.

18 years agoPatch #1492218: document None being a constant.
Georg Brandl [Fri, 26 May 2006 20:14:47 +0000 (20:14 +0000)]
Patch #1492218: document None being a constant.

18 years agoReplace Py_BuildValue("OO") by PyTuple_Pack.
Georg Brandl [Fri, 26 May 2006 20:04:44 +0000 (20:04 +0000)]
Replace Py_BuildValue("OO") by PyTuple_Pack.

18 years agoComment typo
Andrew M. Kuchling [Fri, 26 May 2006 19:51:10 +0000 (19:51 +0000)]
Comment typo

18 years agoneedforspeed: stringlib refactoring: use stringlib/find for string find
Fredrik Lundh [Fri, 26 May 2006 19:48:07 +0000 (19:48 +0000)]
needforspeed: stringlib refactoring: use stringlib/find for string find

18 years agoWrite more docs.
Thomas Heller [Fri, 26 May 2006 19:43:45 +0000 (19:43 +0000)]
Write more docs.

18 years agoneedforspeed: use a macro to fix slice indexes
Fredrik Lundh [Fri, 26 May 2006 19:33:03 +0000 (19:33 +0000)]
needforspeed: use a macro to fix slice indexes

18 years agoneedforspeed: stringlib refactoring: use stringlib/find for unicode
Fredrik Lundh [Fri, 26 May 2006 19:29:05 +0000 (19:29 +0000)]
needforspeed: stringlib refactoring: use stringlib/find for unicode
find

18 years agoneedforspeed: stringlib refactoring, continued. added count and
Fredrik Lundh [Fri, 26 May 2006 19:24:53 +0000 (19:24 +0000)]
needforspeed: stringlib refactoring, continued.  added count and
find helpers; updated unicodeobject to use stringlib_count

18 years agoadded rpartition method to UserString class
Fredrik Lundh [Fri, 26 May 2006 19:23:21 +0000 (19:23 +0000)]
added rpartition method to UserString class

18 years agoException isn't the root of all exception classes anymore.
Georg Brandl [Fri, 26 May 2006 19:04:47 +0000 (19:04 +0000)]
Exception isn't the root of all exception classes anymore.

18 years agoChange C spacing to 4 spaces by default to match PEP 7 for new C files.
Brett Cannon [Fri, 26 May 2006 19:04:47 +0000 (19:04 +0000)]
Change C spacing to 4 spaces by default to match PEP 7 for new C files.

18 years agosubstring split now uses /F's fast string matching algorithm.
Andrew Dalke [Fri, 26 May 2006 19:02:09 +0000 (19:02 +0000)]
substring split now uses /F's fast string matching algorithm.
  (If compiled without FAST search support, changed the pre-memcmp test
   to check the last character as well as the first.  This gave a 25%
   speedup for my test case.)

Rewrote the split algorithms so they stop when maxsplit gets to 0.
Previously they did a string match first then checked if the maxsplit
was reached.  The new way prevents a needless string search.

18 years agoAdd rpartition() and path caching
Andrew M. Kuchling [Fri, 26 May 2006 18:41:18 +0000 (18:41 +0000)]
Add rpartition() and path caching

18 years agoRevert tests to MAL's original round sizes to retiain comparability
Steve Holden [Fri, 26 May 2006 18:26:21 +0000 (18:26 +0000)]
Revert tests to MAL's original round sizes to retiain comparability
from long ago and far away. Stop calling this pybench 1.4 because it
isn't. Remove the empty test, which was a bad idea.

18 years agoneedspeed: rpartition documentation, tests, and a bug fixes.
Fredrik Lundh [Fri, 26 May 2006 18:24:15 +0000 (18:24 +0000)]
needspeed: rpartition documentation, tests, and a bug fixes.

feel free to add more tests and improve the documentation.

18 years agoneedforspeed: added rpartition implementation
Fredrik Lundh [Fri, 26 May 2006 18:15:38 +0000 (18:15 +0000)]
needforspeed: added rpartition implementation

18 years agoremoved unnecessary include
Fredrik Lundh [Fri, 26 May 2006 18:05:34 +0000 (18:05 +0000)]
removed unnecessary include

18 years agoNeed for speed: Patch #921466 : sys.path_importer_cache is now used to cache valid and
Georg Brandl [Fri, 26 May 2006 18:03:31 +0000 (18:03 +0000)]
Need for speed: Patch #921466 : sys.path_importer_cache is now used to cache valid and
  invalid file paths for the built-in import machinery which leads to
  fewer open calls on startup.

  Also fix issue with PEP 302 style import hooks which lead to more open()
  calls than necessary.

18 years agoReordered, and wrote more docs.
Thomas Heller [Fri, 26 May 2006 17:47:40 +0000 (17:47 +0000)]
Reordered, and wrote more docs.

18 years agoUse minimum calibration time rather than avergae to avoid
Steve Holden [Fri, 26 May 2006 17:41:32 +0000 (17:41 +0000)]
Use minimum calibration time rather than avergae to avoid
the illusion of negative run times. Halt with an error if
run times go below 10 ms, indicating that results will be
unreliable.