Sébastien Sablé sa...@users.sourceforge.net added the comment:
Thanks R. David.
I checked in 3.1 and PIPE_BUF is not defined in the select module, so the
default value of 512 is used in subprocess.
So no correction is needed for that version.
--
Changes by Senthil Kumaran orsent...@gmail.com:
--
assignee: d...@python - orsenthil
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10048
___
___
Senthil Kumaran orsent...@gmail.com added the comment:
Not an issue anymore as socket timeout at client is supposed to happen with the
connection is hung due to unresponsive host.
The original bug was raised py2.3. Closing it as out of date.
--
nosy: +orsenthil
resolution: - out of
Changes by Senthil Kumaran orsent...@gmail.com:
--
assignee: - orsenthil
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue1520831
___
___
Marc-Andre Lemburg m...@egenix.com added the comment:
Wouldn't it be better to use Py_hash_t instead of size_t for calculating the
hash values in those hash functions ?
--
nosy: +lemburg
___
Python tracker rep...@bugs.python.org
Marc-Andre Lemburg m...@egenix.com added the comment:
And related to my previous comment: shouldn't Py_hash_t map to size_t instead
of Py_ssize_t ?
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9778
Sébastien Sablé sa...@users.sourceforge.net added the comment:
I also believe this patch should be backported.
If the issue2643 is not backported, then the patch to apply should be
patch_flush_mmap.diff instead of patch_mmap_flush_updated.diff
--
New submission from Boštjan Mejak bostjan.me...@gmail.com:
Have your default locale set to 'Slovenian' which uses a comma for the decimal
symbol, like 2.76 is written as 2,76. Observe that the format specifier 'n'
does not work for the default 'Slovenian' locale setting.
Then try running this
Changes by Senthil Kumaran orsent...@gmail.com:
--
assignee: - orsenthil
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue4733
___
___
Senthil Kumaran orsent...@gmail.com added the comment:
On Fri, Sep 03, 2010 at 10:57:17PM +, Georg Brandl wrote:
That's why I said to use testsetup directives -- they are not
visible in the HTML/PDF/... output, but used when running the tests.
Do you already have such a directive in
Matthias Klose d...@debian.org added the comment:
Index: Misc/python.pc.in
===
--- Misc/python.pc.in (Revision 85644)
+++ Misc/python.pc.in (Arbeitskopie)
@@ -8,6 +8,6 @@
Requires:
Version: @VERSION@
Libs.private: @LIBS@
Matthias Klose d...@debian.org added the comment:
the name of the library should not differ for the static and the shared library.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9807
___
New submission from Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp:
When kill_python[,d].exe was called via short path,
no python processes won't be killed. This happens
because, directory path is compared via simple
wcsnicmp. If one is short path and another is long path,
wcsnicmp determines they
Changes by Antoine Pitrou pit...@free.fr:
--
nosy: +eric.smith, rhettinger
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
___
___
Changes by Antoine Pitrou pit...@free.fr:
--
status: pending - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10127
___
___
Python-bugs-list
Changes by Antoine Pitrou pit...@free.fr:
--
nosy: +rhettinger
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue5736
___
___
Python-bugs-list mailing
Eric Smith e...@trueblade.com added the comment:
How are you setting the Slovenian locale?
Could please let me know what this prints:
import locale
locale.localeconv()
Also, could you let me know what:
locale.format('%.3f', 2.45)
prints? Both of these would be when the Slovenian locale is
R. David Murray rdmur...@bitdance.com added the comment:
Yes, Georg mentioned the directive because it exists :)
See the turtle docs for some examples, I think. I seem to remember using it
when I made those doctests pass on 2.7 (warning: it writes weird stuff on your
screen :)
--
Eric Smith e...@trueblade.com added the comment:
Oops, I meant locale.format('%.3f', 2.76), although of course the number
shouldn't matter.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
Changes by Georg Brandl ge...@python.org:
--
title: test_mmap failling on AIX - test_mmap failing on AIX
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue678250
___
Benjamin Peterson benja...@python.org added the comment:
2010/10/18 Marc-Andre Lemburg rep...@bugs.python.org:
Marc-Andre Lemburg m...@egenix.com added the comment:
And related to my previous comment: shouldn't Py_hash_t map to size_t instead
of Py_ssize_t ?
No, negative values have to be
jan matejek jmate...@suse.cz added the comment:
i was able to reproduce this in clean 2.7
Sandro, this is only reproducible on systems without python - so by definition,
you can hit this only during installation
as for issue8335, yes, i think that it's a duplicate
distutils2 is irrelevant
Changes by Floris Bruynooghe floris.bruynoo...@gmail.com:
--
nosy: +flub
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue3526
___
___
Éric Araujo mer...@netwok.org added the comment:
i was able to reproduce this in clean 2.7
as for issue8335, yes, i think that it's a duplicate
Ok, then please add your failure messages on the other bug.
Sandro, this is only reproducible on systems without python
- so by definition, you can
Éric Araujo mer...@netwok.org added the comment:
This may be solved by backporting the fix in #10126. I’ll do it when my
network gives me access to svn again :/
--
components: +Distutils2
versions: +3rd party, Python 2.7, Python 3.1, Python 3.2 -Python 2.6
Case Van Horsen cas...@gmail.com added the comment:
Some quick comments on the latest patch.
1) I don't think you can remove the type cast used when comparing the hash
value against -1 and -2. IIRC, GCC considers that undefined behavior.
2) In sysmodule.c, we need to use PyLong_FromSsize_t
Changes by Éric Araujo mer...@netwok.org:
--
nosy: +sandro.tosi, valeo
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue8335
___
___
Python-bugs-list
Sandro Tosi sandro.t...@gmail.com added the comment:
On Mon, Oct 18, 2010 at 15:29, Éric Araujo rep...@bugs.python.org wrote:
Éric Araujo mer...@netwok.org added the comment:
Sandro, this is only reproducible on systems without python
- so by definition, you can hit this only during
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Mon, Oct 18, 2010 at 8:45 AM, Benjamin Peterson
rep...@bugs.python.org wrote:
..
No, negative values have to be allowed.
Why? As far as I can tell, negative values are only used as sentinels
and we can use say
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
Committed fixes in r85689(py3k), r85693(release31-maint),
r85694(release27-maint). (This should work because I
simply ported already working fix in ntpath.relpath)
--
resolution: - fixed
stage: commit review -
Antoine Pitrou pit...@free.fr added the comment:
Le lundi 18 octobre 2010 à 13:56 +, Alexander Belopolsky a écrit :
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Mon, Oct 18, 2010 at 8:45 AM, Benjamin Peterson
rep...@bugs.python.org wrote:
..
No,
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Mon, Oct 18, 2010 at 9:59 AM, Antoine Pitrou rep...@bugs.python.org wrote:
..
Why? As far as I can tell, negative values are only used as sentinels
and we can use say (size_t)-1 instead of -1L.
You can, except that
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
Issue #9778 makes this out of date.
--
assignee: tim_one - belopolsky
nosy: -BreamoreBoy
resolution: - out of date
status: open - pending
superseder: - Make hash values the same width as a pointer (or
Barry A. Warsaw ba...@python.org added the comment:
Even though this one's older, I'm going to mark it as a duplicate of issue
10126, which is tracking the backport of the fix I made in Python 3.2 to 3.1
and 2.7.
The key issues here are that Python was built with --enabled-shared and the
Barry A. Warsaw ba...@python.org added the comment:
Seems like roundup hates me. Just go to issue 10126.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9539
___
Stephen Hansen me+pyt...@ixokai.io added the comment:
FYI, this fix broke some buildbots:
http://www.python.org/dev/buildbot/all/builders/x86%20Snow%20Leopard%202.7/builds/50
for instance. Gentoo too.
--
nosy: +ixokai
___
Python tracker
Changes by Éric Araujo mer...@netwok.org:
--
superseder: distutils test_build_ext's test_get_outputs fails in bootstrap
environment - test_distutils failure with --enable-shared
___
Python tracker rep...@bugs.python.org
Marc-Andre Lemburg m...@egenix.com added the comment:
Benjamin Peterson wrote:
Benjamin Peterson benja...@python.org added the comment:
Marc-Andre Lemburg m...@egenix.com added the comment:
And related to my previous comment: shouldn't Py_hash_t map to size_t
instead of Py_ssize_t ?
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
Committed in r85695. Leaving open to discuss whether anything can/should be
done for the case when reindent acts as an stdin to stdout filter. Also, what
is the policy on backporting Tools' bug fixes?
--
Sebastian Ramacher sebasti...@users.sourceforge.net added the comment:
Any news on that?
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue1699259
___
Éric Araujo mer...@netwok.org added the comment:
Marking as duplicate, following Barry in msg119022
--
nosy: +barry
resolution: - duplicate
stage: - committed/rejected
status: open - closed
superseder: - test_distutils failure with --enable-shared
Case Van Horsen cas...@gmail.com added the comment:
Also, note that hash(-12) is -12.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9778
___
Antoine Pitrou pit...@free.fr added the comment:
AFAICT, a change from (Py_ssize_t)-1 to (size_t)-1 is less likely to
break code than a change from -1L to (Py_ssize_t)-1. (Assuming a
sizeof(long) != sizeof(void*) platform.)
That's true.
The benefit, though is that
hash computations can
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Mon, Oct 18, 2010 at 11:17 AM, Sebastian Ramacher
rep...@bugs.python.org wrote:
..
Any news on that?
Is this patch still relevant for 3.2? It looks like const has been
added when char* was changed to wchar_t* in the
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
In fact, it looks like const has been added in py3k as early as r57439.
I am resetting versions to 2.7, but I am -0 on backporting. I am also
unselecting type because with feature request type this should be closed
New submission from Bruce Sherwood bruce.sherw...@gmail.com:
At Guido's request, I've carried out the same update to the IDLE
distributed with Python 2.7 that I submitted for Python 3, to incorporate the
work of Guilherme Polo in the Google Summer of Code 2009. Guido was concerned
that with
Changes by Éric Araujo mer...@netwok.org:
--
nosy: +eric.araujo
versions: -3rd party, Python 2.5, Python 2.6, Python 3.3
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
___
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Mon, Oct 18, 2010 at 11:27 AM, Antoine Pitrou rep...@bugs.python.org wrote:
..
The benefit, though is that
hash computations can be performed natively on the hash values without
casting to an unrelated type.
I don't
Changes by Éric Araujo mer...@netwok.org:
--
nosy: +gpolo
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10118
___
___
Python-bugs-list mailing
Changes by Éric Araujo mer...@netwok.org:
--
nosy: +eric.araujo
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10087
___
___
Python-bugs-list
Éric Araujo mer...@netwok.org added the comment:
You could say my question was half-academic. I read your closing message and
thought “this feature request has been closed because of the version, not
really rejected”, so I asked about reopening. On a second level, it appears
from your
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Sun, Oct 17, 2010 at 3:54 PM, Boštjan Mejak rep...@bugs.python.org wrote:
..
About the if year == 0 check... Well, read Wikipedia's article
http://en.wikipedia.org/wiki/0_(year) which clearly
states that Year
Éric Araujo mer...@netwok.org added the comment:
Thanks for the fix, good catch! Do you want to write a patch to test_sysconfig
to add a test? Otherwise I’ll do it.
--
components: +Distutils2, Library (Lib)
versions: +3rd party, Python 2.7, Python 3.1
Éric Araujo mer...@netwok.org added the comment:
I wrote too fast, I thought your diff was for sysconfig itself, not
test_sysconfig.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10086
Changes by STINNER Victor victor.stin...@haypocalc.com:
--
nosy: +haypo
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue5111
___
___
Éric Araujo mer...@netwok.org added the comment:
Do you know something better than the locale encoding? I don't.
Neither do I, sorry.
Can’t each filesystem have its own encoding?
Yes, but how do you get the encoding of each filesystem?
If I really had to, on linux I could parse the output of
Changes by Senthil Kumaran orsent...@gmail.com:
--
assignee: - orsenthil
nosy: +orsenthil
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue5111
___
Changes by Éric Araujo mer...@netwok.org:
--
nosy: +eric.araujo
versions: -Python 2.6
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue5111
___
___
Éric Araujo mer...@netwok.org added the comment:
Attaching a patch with your two suggestions.
Two things worry me and prevent me from committing right now:
1) sysconfig was originally distutils.sysconfig, and some duplication remains.
Can’t this bug happen with distutils.sysconfig too?
New submission from Alexander Belopolsky belopol...@users.sourceforge.net:
Documentation for the calendar module says:
Most of these functions and classes rely on the datetime module which uses an
idealized calendar, the current Gregorian calendar indefinitely extended in
both directions.
Boštjan Mejak bostjan.me...@gmail.com added the comment:
{'mon_decimal_point': '', 'int_frac_digits': 127, 'p_sep_by_space': 127,
'frac_digits': 127, 'thousands_sep': '', 'n_sign_posn': 127,
'decimal_point': '.', 'int_curr_symbol': '', 'n_cs_precedes': 127,
'p_sign_posn': 127,
Case Van Horsen cas...@gmail.com added the comment:
Sorry, I could have been clearer indeed. Consider the following code:
static Py_hash_t
long_hash(PyLongObject *v)
{
unsigned long x;
...
x = x * sign;
if (x == (unsigned long)-1)
x = (unsigned long)-2;
return
Changes by Brian Curtin cur...@acm.org:
--
nosy: +kbk, taleinat
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10137
___
___
Python-bugs-list
Changes by Brian Curtin cur...@acm.org:
--
nosy: +terry.reedy
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10137
___
___
Python-bugs-list mailing
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
On Mon, Oct 18, 2010 at 1:25 PM, Case Van Horsen rep...@bugs.python.org wrote:
..
We either needed to (1) add an unsigned Py_hash_t type or (2) just use size_t
and Py_ssize_t.
Option (2) may actually be preferable
Eric Smith e...@trueblade.com added the comment:
It looks like the float.__format__ code is correctly using the value of
decimal_point = '.'. It also agrees with locale.format().
How are you setting the locale? The problem appears to be either how you are
setting the locale or the contents of
Changes by Antoine Pitrou pit...@free.fr:
--
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9437
___
___
Python-bugs-list
Amaury Forgeot d'Arc amaur...@gmail.com added the comment:
But this patch is a diff between a 2.7 and a 3.2 version of IDLE, isn't it?
The tkinter-Tkinter renaming is not supposed to happen in the 2.7 branch.
Could you instead show a diff between the present version of IDLE in 2.7 and
the
Boštjan Mejak bostjan.me...@gmail.com added the comment:
So do I need additional things to set in my code if I use the 'n' format
specifier in order for it to be locale-aware? So using just the 'n' format
specifier is not enough? Please explain in depth.
On Mon, Oct 18, 2010 at 7:32 PM, Eric
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
The most pedantic implementation of calendar.isleap() would be
from datetime import date, timedelta
def isleap(year):
return date(year, 3, 1) - date(year, 2, 1) == timedelta(29)
Since python calendar only supports
Éric Araujo mer...@netwok.org added the comment:
Thanks for the report. This is a duplicate, you can add yourself to the nosy
list on the superseder bug to track status.
--
resolution: - duplicate
stage: - committed/rejected
status: open - closed
superseder: - distutils: set
R. David Murray rdmur...@bitdance.com added the comment:
The interesting question is, why aren't the buildbots seeing this failure? I
can reproduce it in my Windows VM using 3.2a3, and will work on a fix (to the
tests, the code under test is doing the correct thing, though that thing is
Changes by R. David Murray rdmur...@bitdance.com:
--
assignee: - r.david.murray
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10134
___
___
Changes by Georg Brandl ge...@python.org:
--
nosy: -georg.brandl
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10073
___
___
Python-bugs-list
David Watson bai...@users.sourceforge.net added the comment:
The result from gethostname likely comes out of machine-local
configuration. It may have non-ASCII in it, which is then likely
encoded in the local encoding. When looking it up in DNS, IDNA
should be applied.
I would have thought
Boštjan Mejak bostjan.me...@gmail.com added the comment:
Also, your pedantic version of isleap() is not pedantic at all.
return date(year, 3, 1) - date(year, 2, 1) == timedelta(29)
does not seem readable at all. Readability counts!
return date(year, 3, 1) is not understandable. What are the
Georg Brandl ge...@python.org added the comment:
You need to call setlocale() in your program. For more in-depth explanations,
please refer to the docs at http://docs.python.org/library/locale.
--
nosy: +georg.brandl
___
Python tracker
Éric Araujo mer...@netwok.org added the comment:
Set literals, a new feature indeed, have been backported to 2.7 and 3.1. The
lack of support in ast.literal_eval is arguably a bug. Benjamin, can you make
a statement as release manager? Thanks.
--
nosy: +eric.araujo
Georg Brandl ge...@python.org added the comment:
return date(year, 3, 1) is not understandable. What are the arguments 3 and
1 in the date() function for?
Boštjan, we appreciate your concern for the programming style of the
Python standard library. However, your question shows that you
Boštjan Mejak bostjan.me...@gmail.com added the comment:
else:
--ndays = (date(year, month + 1, 1) - first).days
return first.weekday(), ndays
Oh my God! The line with a pointer is so ugly!
On Mon, Oct 18, 2010 at 7:59 PM, Alexander Belopolsky
rep...@bugs.python.org wrote:
Boštjan Mejak bostjan.me...@gmail.com added the comment:
I thought having Slovenian locale set in Windows OS is the way the 'n'
format specifier works. So I must set the locale in the app. Now we're
cookin'! ;) Thanks Georg.
On Mon, Oct 18, 2010 at 8:14 PM, Georg Brandl
Raymond Hettinger rhettin...@users.sourceforge.net added the comment:
My expectation is that Py_hash_t is the same as Py_ssize_t. The goal is to
make hashes match the range of possible table sizes.
--
___
Python tracker rep...@bugs.python.org
Éric Araujo mer...@netwok.org added the comment:
Thanks for the report and suggestions. I agree to the gist of your changes,
but I wouldn’t remove the explanation of implicit relative imports (the part
starting with “If you’re writing code”).
--
keywords: +patch
nosy: +eric.araujo
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
I don't think anything good will come out of this. Closing as rejected.
--
resolution: - rejected
status: open - closed
___
Python tracker rep...@bugs.python.org
Changes by Alexander Belopolsky belopol...@users.sourceforge.net:
Removed file: http://bugs.python.org/file19267/unnamed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10073
___
Changes by Alexander Belopolsky belopol...@users.sourceforge.net:
Removed file: http://bugs.python.org/file19268/unnamed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10073
___
Changes by Michał Górny mgo...@gentoo.org:
--
nosy: +mgorny
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9561
___
___
Python-bugs-list mailing
Changes by Eric Smith e...@trueblade.com:
--
resolution: - invalid
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
___
Changes by Eric Smith e...@trueblade.com:
Removed file: http://bugs.python.org/file19265/unnamed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
___
Changes by Eric Smith e...@trueblade.com:
Removed file: http://bugs.python.org/file19266/unnamed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
___
Changes by Eric Smith e...@trueblade.com:
Removed file: http://bugs.python.org/file19269/unnamed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10135
___
Changes by Georg Brandl ge...@python.org:
--
status: closed - open
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue5117
___
___
Python-bugs-list
Vetoshkin Nikita nikita.vetosh...@gmail.com added the comment:
Updated patch against py3k. Fixing last reported issue with
'%(a)s %%' % {'a':'xyz'}
--
nosy: +nvetoshkin
Added file: http://bugs.python.org/file19270/issue1467929_py3k.diff
___
Python
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
I don't see how this difference is relevant for exposing the functionality in
python:
Linux:
int getgrouplist(const char *user, gid_t group,
gid_t *groups, int *ngroups);
MacOS:
int
Ned Deily n...@acm.org added the comment:
I believe the enhancements here are the same as submitted for py3k in
Issue10079. Since it is likely the same comments will apply to both variants,
I think it would be better to have just one issue, so I would recommend
regenerating the patch against
Benjamin Peterson benja...@python.org added the comment:
2010/10/18 Éric Araujo rep...@bugs.python.org:
Éric Araujo mer...@netwok.org added the comment:
Set literals, a new feature indeed, have been backported to 2.7 and 3.1. The
lack of support in ast.literal_eval is arguably a bug.
Vetoshkin Nikita nikita.vetosh...@gmail.com added the comment:
@Alexander, it was just a note, that implementation in posixmodule.c won't be
the same across all flavours of Unix :)
--
___
Python tracker rep...@bugs.python.org
R. David Murray rdmur...@bitdance.com added the comment:
Drat, there's a real bug here, too. The bytes parsing machinery doesn't
correctly translate crlf on input.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue10134
Changes by Vetoshkin Nikita nikita.vetosh...@gmail.com:
Removed file: http://bugs.python.org/file19270/issue1467929_py3k.diff
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue1467929
___
Vetoshkin Nikita nikita.vetosh...@gmail.com added the comment:
Updated patch to capture another patological case:
'%(a)s %' % {'a':'xyz'} - incomplete formatter at the end of the line
--
Added file: http://bugs.python.org/file19271/issue1467929_py3k.diff
1 - 100 of 165 matches
Mail list logo