[issue5738] multiprocessing example wrong

2009-05-02 Thread Garrett Cooper
Garrett Cooper added the comment: Priorities shifted again at work, so I'll get around to this some time around early June when I get an opportunity to implement multiprocessing in my work code... Thanks! -- ___ Python tracker

[issue5679] cleanUp stack for unittest

2009-05-02 Thread Garrett Cooper
Garrett Cooper added the comment: Cool! Thanks for all of the hard work Michael :D. -- ___ Python tracker ___ ___ Python-bugs-list mai

[issue5850] Full example for emulating a container type

2009-05-02 Thread Garrett Cooper
Garrett Cooper added the comment: Maybe the documentation for other examples should be referenced then? -- ___ Python tracker ___ ___

[issue1607951] mailbox.Maildir re-reads directory too often

2009-05-02 Thread A.M. Kuchling
A.M. Kuchling added the comment: Committed to trunk in rev. 72213. Committed to py3k in rev. 72228. -- resolution: -> fixed status: open -> closed versions: +Python 2.7 -Python 2.6 ___ Python tracker _

[issue5559] IDLE Output Window 's goto fails when path has spaces

2009-05-02 Thread Kurt B. Kaiser
Kurt B. Kaiser added the comment: r72227. How's your test code coming? A relative Win filename with leading spaces should be found even when there's a file of same name but no spaces. -- keywords: +26backport ___ Python tracker

[issue5911] built-in compile() should take encoding option.

2009-05-02 Thread Naoki INADA
New submission from Naoki INADA : The built-in compile() expects source is encoded in utf-8. This behavior make it harder to implement alternative shell like IDLE and IPython. (http://bugs.python.org/issue1542677 and https://bugs.launchpad.net/ipython/+bug/339642 are related bugs.) Below is curr

[issue5908] I need to import the module in the same thread?

2009-05-02 Thread tyoc
tyoc added the comment: OK, here is a resume of the anterior. I see clearly that it matter where I import the library (dont know if is a problem of the library or python). This time the thread doesnt end, will end when you hit CTRL+C in the terminal, for test this you need enabled accessibil

[issue5311] bdist_msi generates version number for pure Python packages

2009-05-02 Thread Steven Bethard
Steven Bethard added the comment: Ok, I added one final Feature that allows the user to specify an alternate Python directory. (The PathEdit for specifying the directory will only display if this Feature is set to be installed.) I think this patch is pretty much ready to go in now. It could use

[issue1128] msilib.Directory.make_short only handles file names with a single dot in them

2009-05-02 Thread Henrique Baggio
Henrique Baggio added the comment: I create a patch using the os.path.splitext function. -- Added file: http://bugs.python.org/file13846/msilib.__init__.patch ___ Python tracker

[issue1128] msilib.Directory.make_short only handles file names with a single dot in them

2009-05-02 Thread Henrique Baggio
Henrique Baggio added the comment: Sorry, I don't know how create a patch, but just change the line with parts = file.split(".") to parts = os.path.splitext(file) and the problem is fixed. -- nosy: +hnrqbaggio ___ Python tracker

[issue5201] Using LDFLAGS='-rpath=\$$LIB:/some/other/path' ./configure breaks the build

2009-05-02 Thread Floris Bruynooghe
Floris Bruynooghe added the comment: Hmm, the patch isn't quite right yet. When a $$ is present in the makefile .parse_makefile() needs to return a single $. I'm not sure yet what needs to happen with the \ for the shell escape. -- ___ Python track

[issue1054967] bdist_deb - Debian packager

2009-05-02 Thread Paul Hummer
Paul Hummer added the comment: I've been doing a review of this patch for the last few hours. There are a few issues that need to be taken care of in order for it to move forward, and I'm currently working on them, in this order: 1. Update the patch to the most recent svn. The most current

[issue5728] Support telling TestResult objects a test run has finished

2009-05-02 Thread Michael Foord
Michael Foord added the comment: Committed in revision 72225. -- status: open -> closed ___ Python tracker ___ ___ Python-bugs-list ma

[issue5201] Using LDFLAGS='-rpath=\$$LIB:/some/other/path' ./configure breaks the build

2009-05-02 Thread Floris Bruynooghe
Floris Bruynooghe added the comment: The attached patch does fix this issue. Concerning the specific example of LDFLAGS used here there is still and issue with LDFLAGS being ignored by the buid for the shared modules, but that is an other issue. -- keywords: +patch Added file: http://b

[issue1443504] locale.getpreferredencoding() dies when setlocale fails

2009-05-02 Thread Martin v. Löwis
Martin v. Löwis added the comment: > If a pointer to a string is given for locale and the selection can be > honored, the setlocale function returns a pointer to the string > associated with the specified category for the new locale. If the > selection cannot be honored, the setlocale function r

[issue5910] kqueue for more than one event is broken.

2009-05-02 Thread Erik Gorset
New submission from Erik Gorset : The kqueue code doesn't increment the index when building the changelist. The patch should work for both py26 and py30. -- components: Extension Modules files: kqueue.patch keywords: patch messages: 86984 nosy: Erik Gorset severity: normal status: open

[issue1443504] locale.getpreferredencoding() dies when setlocale fails

2009-05-02 Thread Jeroen Ruigrok van der Werven
Jeroen Ruigrok van der Werven added the comment: I will first point out where our current implementation is broken, in my opinion of course, after which I propose a small patch. Both C90 (7.4.1.1) and C99 (7.11.1.1) state: "A value of "C" for locale specifies the minimal environment for C tran

[issue5084] unpickling does not intern attribute names

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Committed in r72223, r72224. Thanks! -- resolution: -> fixed status: open -> closed ___ Python tracker ___

[issue5909] Segfault in typeobject.c

2009-05-02 Thread Gerald Britton
New submission from Gerald Britton : Python 2.6 segfaults when starting up the gramps application -- assignee: theller components: ctypes files: gdb-python.txt messages: 86981 nosy: gbritton, theller severity: normal status: open title: Segfault in typeobject.c type: crash versions: Pyth

[issue5311] bdist_msi generates version number for pure Python packages

2009-05-02 Thread Steven Bethard
Steven Bethard added the comment: Ok, that was actually easier than I thought it would be. The new patch introduces properties for each Python version (e.g. TARGETDIR2.4, PYTHON.MACHINE.2.4, etc.), and disables and hides the features for any Python versions that aren't found in the registry. Th

[issue5907] repr of time.struct_time type does not eval

2009-05-02 Thread Georg Brandl
Georg Brandl added the comment: Also, the 2.5 behavior was not up to spec either: after eval() you get a simple tuple, while the object before was a time.struct_time object. (True, you can pass these tuples to the time functions, but an eval()able repr() should reproduce the object exactly.) -

[issue5679] cleanUp stack for unittest

2009-05-02 Thread Michael Foord
Michael Foord added the comment: Committed in revision 72219. -- status: open -> closed ___ Python tracker ___ ___ Python-bugs-list ma

[issue5692] test_zipfile fails under Windows

2009-05-02 Thread Antoine Pitrou
Changes by Antoine Pitrou : -- versions: +Python 2.6, Python 2.7, Python 3.0 ___ Python tracker ___ ___ Python-bugs-list mailing list U

[issue5692] test_zipfile fails under Windows

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: This alternate patch is ok here (tested under Windows and Linux). It's against trunk, since the bug actually exists there too. -- Added file: http://bugs.python.org/file13840/issue5692.patch ___ Python tracker

[issue1588] str.format() wrongly formats complex() numbers (Py30a2)

2009-05-02 Thread Eric Smith
Eric Smith added the comment: > Hmm. That also seems wrong to me. So I guess it's a suggestion > for float as well, which means it's not specific to this issue. > Should I open a separate feature request? Yes, this is a separate issue. It comes from PEP 3101's specification of "like 'g' but

[issue5908] I need to import the module in the same thread?

2009-05-02 Thread tyoc
New submission from tyoc : Hi there, my problem is the following I dont know if this is a python error, spected behaviour or what, so here I go. I'm using pyatspi in a console application for retrieve focus events (you need to enable accessibility if want to check... that is at-spi- registryd i

[issue5692] test_zipfile fails under Windows

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: I don't think your patch is specific enough. It should only trigger when the targetpath is of the form "/" or "X:/". By the way, while I first rated this bug release blocker, thinking test_zipfile was failing for all Windows platforms, we can downgrade it if it

[issue1588] str.format() wrongly formats complex() numbers (Py30a2)

2009-05-02 Thread Mark Dickinson
Mark Dickinson added the comment: Hmm. That also seems wrong to me. So I guess it's a suggestion for float as well, which means it's not specific to this issue. Should I open a separate feature request? -- ___ Python tracker

[issue1588] str.format() wrongly formats complex() numbers (Py30a2)

2009-05-02 Thread Eric Smith
Eric Smith added the comment: Is this suggestion for all types, or just complex? Because float has the same issue. >>> format(pi, '') '3.14159265359' [38243 refs] >>> format(pi, '>') '3.14159' -- ___ Python tracker

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Benjamin Peterson
Benjamin Peterson added the comment: 2009/5/2 <"\"Martin v. Löwis\" "@psf.upfronthosting.co.za>: > > Martin v. Löwis added the comment: > >>> As for PyCodec_SurrogateErrors: I'd rather make it static than expose it. >> >> Why? All the other error handlers are exposed. > > Sure - but what for?

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Martin v. Löwis
Martin v. Löwis added the comment: >> As for PyCodec_SurrogateErrors: I'd rather make it static than expose it. > > Why? All the other error handlers are exposed. Sure - but what for? IMO, they all shouldn't be exposed. -- ___ Python tracker

[issue1607951] mailbox.Maildir re-reads directory too often

2009-05-02 Thread A.M. Kuchling
A.M. Kuchling added the comment: Updated version of the patch that only stores the current time -1sec, adds a test case, and passes all tests. -- keywords: +patch Added file: http://bugs.python.org/file13839/mailbox-mtime.patch ___ Python tracker

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Benjamin Peterson
Benjamin Peterson added the comment: 2009/5/2 <"\"Martin v. Löwis\" "@psf.upfronthosting.co.za>: > > Martin v. Löwis added the comment: > > Committed as r72208, blocked as r72209. > > As for PyCodec_SurrogateErrors: I'd rather make it static than expose it. Why? All the other error handlers a

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Martin v. Löwis
Martin v. Löwis added the comment: Committed as r72208, blocked as r72209. As for PyCodec_SurrogateErrors: I'd rather make it static than expose it. -- resolution: -> accepted status: open -> closed ___ Python tracker

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Benjamin Peterson
Benjamin Peterson added the comment: Something I overlooked is that PyCodec_SurrogateErrors isn't exposed in any headers. -- ___ Python tracker ___ __

[issue5311] bdist_msi generates version number for pure Python packages

2009-05-02 Thread Steven Bethard
Steven Bethard added the comment: Ok, I've been chatting with folks on microsoft.public.platformsdk.msi, and I think the right approach here is to define a Feature for each version of Python. Each Feature would install the exact same files, but to a different Python directory. One of the nice t

[issue1588] str.format() wrongly formats complex() numbers (Py30a2)

2009-05-02 Thread Mark Dickinson
Mark Dickinson added the comment: One comment on the new complex formatting. I now get (in py3k) >>> from math import pi, e >>> format(complex(pi,e), '<') '(3.14159+2.71828j)' >>> format(complex(pi,e), '') '(3.14159265359+2.71828182846j)' I understand why this is happening, but again I think

[issue5907] repr of time.struct_time type does not eval

2009-05-02 Thread Martin v. Löwis
Martin v. Löwis added the comment: Notice that this is no bug: there is no guarantee that repr() can eval(). For some types it does, for others, it doesn't. -- nosy: +loewis type: behavior -> feature request ___ Python tracker

[issue5858] Make complex repr and str more like float repr and str

2009-05-02 Thread Mark Dickinson
Mark Dickinson added the comment: I'm not going to pursue this further; try as I might, I really can't make this anything more than just a personal preference. It doesn't solve any genuine problem. Closing. -- resolution: -> rejected status: open -> closed _

[issue5880] Remove unneeded "context" pointer from getters and setters

2009-05-02 Thread Mark Dickinson
Mark Dickinson added the comment: I've removed those gratuitous context uses in Objects/longobject.c in r72202 (trunk) and r72203 (py3k). I'm not sure it's a good idea to remove the context field completely. Apart from the compatibility issues that Antoine pointed out, it doesn't seem improba

[issue5906] Risk of confusion in multiprocessing module - daemonic processes

2009-05-02 Thread Pascal Chambon
Pascal Chambon added the comment: I agree that for someone who discovers the multiprocessing api as a "generalization" of the threading api, there won't be problems ; I'm just worried about those (like me) who will see "daemonic" as coming from unix processes, and not the threading library B-)

[issue5906] Risk of confusion in multiprocessing module - daemonic processes

2009-05-02 Thread Jesse Noller
Jesse Noller added the comment: The multiprocessing lib mimics the threading library, and the threading.Thread.daemon has always maintained these are not services/daemons/etc. I don't see that the clarification is needed, but let me think about it. -- ___

[issue5907] repr of time.struct_time type does not eval

2009-05-02 Thread John Morton
New submission from John Morton : The output of repr on an object of type time.struct_time has changed from 2.5 to 2.6, and can no longer be read in with an eval. 2.5 behaviour: Python 2.5.4 (r254:67916, Apr 4 2009, 17:55:16) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "licen

[issue5906] Risk of confusion in multiprocessing module - daemonic processes

2009-05-02 Thread Benjamin Peterson
Changes by Benjamin Peterson : -- assignee: -> jnoller nosy: +jnoller ___ Python tracker ___ ___ Python-bugs-list mailing list Unsubsc

[issue5906] Risk of confusion in multiprocessing module - daemonic processes

2009-05-02 Thread Pascal Chambon
New submission from Pascal Chambon : "Usually, daemon processes are processes which got disconnected from their parent process, and work in the background, often under a different user identity. The multiprocessing module has the concept of "daemon" too, but this time in reference to the "threadi

[issue5902] Stricter codec names

2009-05-02 Thread Matthew Barnett
Matthew Barnett added the comment: How about a 'full' form and a 'key' form generated by the function: def codec_key(name): return name.lower().replace("-", "").replace("_", "") The key form would be the key to an available codec, and the key generated by a user-supplied codec name would h

[issue5692] test_zipfile fails under Windows

2009-05-02 Thread Benjamin Peterson
Benjamin Peterson added the comment: Can someone try this patch, please? -- keywords: +patch Added file: http://bugs.python.org/file13838/no_drive.patch ___ Python tracker ___ __

[issue5752] xml.dom.minidom does not handle newline characters in attribute values

2009-05-02 Thread Francesco Sechi
Changes by Francesco Sechi : Added file: http://bugs.python.org/file13837/test_toxml.py ___ Python tracker ___ ___ Python-bugs-list mailing lis

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Benjamin Peterson
Benjamin Peterson added the comment: I think the new patch looks fine. -- assignee: benjamin.peterson -> loewis ___ Python tracker ___ ___

[issue5905] strptime fails in non-UTF locale

2009-05-02 Thread Antoine Pitrou
New submission from Antoine Pitrou : time.strptime() fails with non-UTF8 locales, *even when the input is totally ASCII*. >>> locale.setlocale(locale.LC_TIME, "fr_FR.ISO8859-15") 'fr_FR.ISO8859-15' >>> time.strptime("2009-01-01", "%Y-%m-%d") Traceback (most recent call last): File "", line 1,

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Well, it turns out that strftime() is buggy as well: >>> tp = time.strptime("2009-12-01", "%Y-%m-%d") >>> locale.setlocale(locale.LC_TIME, "fr_FR.ISO8859-15") 'fr_FR.ISO8859-15' >>> time.strftime("%B", tp) Traceback (most recent call last): File "", line 1, i

[issue5752] xml.dom.minidom does not handle newline characters in attribute values

2009-05-02 Thread Francesco Sechi
Changes by Francesco Sechi : -- nosy: +sechi_francesco ___ Python tracker ___ ___ Python-bugs-list mailing list Unsubscribe: http://ma

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Well, sorry for the message above. There is a problem but it is with strptime() actually. >>> time.strptime("2009-12-01", "%Y-%m-%d") Traceback (most recent call last): File "", line 1, in File "/home/antoine/py3k/__svn__/Lib/_strptime.py", line 461, in _s

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Antoine Pitrou
Changes by Antoine Pitrou : -- priority: -> high stage: -> test needed type: -> behavior versions: +Python 3.1 ___ Python tracker ___ __

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Same thing here (Linux) with a non-utf8 locale: >>> locale.setlocale(locale.LC_TIME, "fr_FR.UTF-8") 'fr_FR.UTF-8' >>> time.strftime("%B", time.strptime("2009-12-01", "%Y-%m-%d")) 'décembre' >>> locale.setlocale(locale.LC_TIME, "fr_FR.ISO8859-15") 'fr_FR.ISO8859

[issue3061] time.strftime() always decodes result with UTF-8

2009-05-02 Thread Jeroen Ruigrok van der Werven
Jeroen Ruigrok van der Werven added the comment: As C99 section 7.23.3.5 states: "Each conversion specifier is replaced by appropriate characters as described in the following list. The appropriate characters are determined using the LC_TIME category of the current locale and by the values of z

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Ezio Melotti
Ezio Melotti added the comment: I was able to reproduce this using an italian locale on Windows: >>> locale.setlocale(locale.LC_TIME, 'Italian_Italy.1252') 'Italian_Italy.1252' >>> time.strftime("%A", time.strptime("2009-05-01", "%Y-%m-%d")) 'venerd?' That should be 'venerdì'. I also found http

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Ezio Melotti
Ezio Melotti added the comment: Here the issue might be different though. Does $ LC_ALL=ru_RU.koi8-r python3.0 -c 'import time;time.strftime("%A")' (without the print) work? I don't have the ru_RU locale but here time.strftime() return 'str', not 'bytes' and the utf-8 codec should be able to e

[issue5904] strftime docs do not explain locale affect on result string

2009-05-02 Thread Barry Alan Scott
New submission from Barry Alan Scott : The result of time.strftime seems to be in the locale encoding but this is not pointed out in the documentation. Ideally an example like this would be in the docs to show how to deal with strftime output: import locale import time locale_encoded_time = ti

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Ezio Melotti
Ezio Melotti added the comment: See http://bugs.python.org/issue5398 -- nosy: +ezio.melotti ___ Python tracker ___ ___ Python-bugs-lis

[issue5903] strftime fails in non UTF-8 locale

2009-05-02 Thread Barry Alan Scott
New submission from Barry Alan Scott : On Mac OS X 10.5 $ LC_ALL=ru_RU.koi8-r python3.0 -c 'import time;print( time.strftime("%A"))' Traceback (most recent call last): File "", line 1, in UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data -- components:

[issue5753] CVE-2008-5983 python: untrusted python modules search path

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: I'm not sure we can change the behaviour of PySys_SetArgv() like that. At least not in a bugfix release. In 2.7/3.1, we could either change PySys_SetArgv(), or introduce a new PySys_SetArgvEx() with an additional argument indicating whether sys.path should be mo

[issue4136] merge json library with latest simplejson 2.0.x

2009-05-02 Thread Benjamin Peterson
Benjamin Peterson added the comment: Since no other patches were proposed, I applied Antoine's patch in r72194. -- status: open -> closed ___ Python tracker ___ _

[issue3379] Option to not-exit on test

2009-05-02 Thread Michael Foord
Michael Foord added the comment: No, make that revision 72191. :-) -- ___ Python tracker ___ ___ Python-bugs-list mailing list Unsubsc

[issue3379] Option to not-exit on test

2009-05-02 Thread Michael Foord
Michael Foord added the comment: Committed in revision 71291. -- status: open -> closed ___ Python tracker ___ ___ Python-bugs-list ma

[issue5084] unpickling does not intern attribute names

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Thanks, I'll take a look very soon. -- assignee: alexandre.vassalotti -> pitrou ___ Python tracker ___ _

[issue5084] unpickling does not intern attribute names

2009-05-02 Thread Antoine Pitrou
Changes by Antoine Pitrou : -- stage: needs patch -> patch review ___ Python tracker ___ ___ Python-bugs-list mailing list Unsubscribe:

[issue5880] Remove unneeded "context" pointer from getters and setters

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Doesn't it also break binary compatibility with extension modules? Perhaps this should be quickly discussed on python-dev, although I agree that it looks sensible. -- nosy: +pitrou ___ Python tracker

[issue5902] Stricter codec names

2009-05-02 Thread Antoine Pitrou
Antoine Pitrou added the comment: Is there any reason for allowing "utf" as an alias to utf-8? It sounds much too ambiguous. The other silly variants (those with lots of spurious puncutuations characters) could be forbidden too. -- nosy: +pitrou status: pending -> open

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Martin v. Löwis
Changes by Martin v. Löwis : Added file: http://bugs.python.org/file13836/surrogates.diff ___ Python tracker ___ ___ Python-bugs-list mailing l

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Martin v. Löwis
Changes by Martin v. Löwis : Removed file: http://bugs.python.org/file13830/surrogates.diff ___ Python tracker ___ ___ Python-bugs-list mailing

[issue3672] Ill-formed surrogates not treated as errors during encoding/decoding

2009-05-02 Thread Martin v. Löwis
Martin v. Löwis added the comment: Reviewers: report_bugs.python.org, Benjamin, Message: Issues fixed in r72188. http://codereview.appspot.com/52081/diff/1/5 File Doc/library/codecs.rst (right): http://codereview.appspot.com/52081/diff/1/5#newcode326 Line 326: In addition, the following error

[issue5902] Stricter codec names

2009-05-02 Thread Georg Brandl
Georg Brandl added the comment: I don't think this is a good idea. Accepting all common forms for encoding names means that you can usually give Python an encoding name from, e.g. a HTML page, or any other file or system that specifies an encoding. If we only supported, e.g., "UTF-8" and no ot

[issue1759169] clean up Solaris port and allow C99 extension modules

2009-05-02 Thread James Andrewartha
James Andrewartha added the comment: I'm jhbuilding GNOME on Solaris, and the attached patch fixes the problem for me, having compiled Python with it I can now compile dbus-python, pycairo and pyorbit against it. -- nosy: +trs80 ___ Python tracker <

[issue5902] Stricter codec names

2009-05-02 Thread Ezio Melotti
New submission from Ezio Melotti : I noticed that codec names[1]: 1) can contain random/unnecessary spaces and punctuation; 2) have several aliases that could probably be removed; A few examples of valid codec names (done with Python 3): >>> s = 'xxx' >>> s.encode('utf') b'xxx' >>> s.encode('utf

[issue5901] missing meta-info in documentation pdf

2009-05-02 Thread Georg Brandl
Georg Brandl added the comment: I thought we already did assign these metadata items; looks like it's been messed up somehow. I'll fix this. -- ___ Python tracker ___ __