Velocity Reviews > decimal and context objects!

decimal and context objects!

MooMaster
Guest
Posts: n/a

 03-02-2007
Hey guys, I'm trying to do some black magic voodoo and it's a little
late, so forgive me if this question seems obvious or has been asked
before. I tried doing a search on context objects and didn't find
anything that popped out, and I'm too tired to keep digging.

I'm making a little program that is trying to do weird and sexy things
by fully leveraging the power of all the built-in beauty of Python. I
was trying to play around with the new features added into Python 2.5,
and ran into an unexpected issue...check this out:

>>> moo = lambda x, y : decimal.Context(3).sqrt(decimal.Context(3).power(x ,2) + decimal.Context(3).power(y,2))
>>> moo

<function <lambda> at 0x02CD0EB0>
>>> row = [1,2,3,4,5]
>>> weight_vector = .00556
>>> moo(sum(row), weight_vector)

Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
moo(sum(row), weight_vector)
File "<pyshell#1>", line 1, in <lambda>
moo = lambda x, y :
decimal.Context(3).sqrt(decimal.Context(3).power(x ,2) +
decimal.Context(3).power(y,2))
File "C:\Python25\lib\decimal.py", line 2662, in power
return a.__pow__(b, modulo, context=self)
TypeError: wrapper __pow__ doesn't take keyword arguments

I have no idea what keyword argument is getting passed to __pow__,
anyone know what's going on?

This should compute sqrt(5^2 + 3^2)

MooMaster
Guest
Posts: n/a

 03-02-2007
On Mar 2, 3:08 am, "MooMaster" <(E-Mail Removed)> wrote:
> Hey guys, I'm trying to do some black magic voodoo and it's a little
> late, so forgive me if this question seems obvious or has been asked
> before. I tried doing a search on context objects and didn't find
> anything that popped out, and I'm too tired to keep digging.
>
> I'm making a little program that is trying to do weird and sexy things
> by fully leveraging the power of all the built-in beauty of Python. I
> was trying to play around with the new features added into Python 2.5,
> and ran into an unexpected issue...check this out:
>
> >>> moo = lambda x, y : decimal.Context(3).sqrt(decimal.Context(3).power(x ,2) + decimal.Context(3).power(y,2))
> >>> moo

>
> <function <lambda> at 0x02CD0EB0>>>> row = [1,2,3,4,5]
> >>> weight_vector = .00556
> >>> moo(sum(row), weight_vector)

>
> Traceback (most recent call last):
> File "<pyshell#5>", line 1, in <module>
> moo(sum(row), weight_vector)
> File "<pyshell#1>", line 1, in <lambda>
> moo = lambda x, y :
> decimal.Context(3).sqrt(decimal.Context(3).power(x ,2) +
> decimal.Context(3).power(y,2))
> File "C:\Python25\lib\decimal.py", line 2662, in power
> return a.__pow__(b, modulo, context=self)
> TypeError: wrapper __pow__ doesn't take keyword arguments
>
> I have no idea what keyword argument is getting passed to __pow__,
> anyone know what's going on?
>
> This should compute sqrt(5^2 + 3^2)

Oh sorry, ignore that last line, that was a copy/paste from another
example I forgot to remove...OBVIOUSLY it's going to compute something

Peter Otten
Guest
Posts: n/a

 03-02-2007
MooMaster wrote:

> Hey guys, I'm trying to do some black magic voodoo and it's a little
> late, so forgive me if this question seems obvious or has been asked
> before. I tried doing a search on context objects and didn't find
> anything that popped out, and I'm too tired to keep digging.
>
> I'm making a little program that is trying to do weird and sexy things
> by fully leveraging the power of all the built-in beauty of Python. I
> was trying to play around with the new features added into Python 2.5,
> and ran into an unexpected issue...check this out:
>
>>>> moo = lambda x, y :
>>>> decimal.Context(3).sqrt(decimal.Context(3).power(x ,2) +
>>>> decimal.Context(3).power(y,2)) moo

> <function <lambda> at 0x02CD0EB0>
>>>> row = [1,2,3,4,5]
>>>> weight_vector = .00556
>>>> moo(sum(row), weight_vector)

> Traceback (most recent call last):
> File "<pyshell#5>", line 1, in <module>
> moo(sum(row), weight_vector)
> File "<pyshell#1>", line 1, in <lambda>
> moo = lambda x, y :
> decimal.Context(3).sqrt(decimal.Context(3).power(x ,2) +
> decimal.Context(3).power(y,2))
> File "C:\Python25\lib\decimal.py", line 2662, in power
> return a.__pow__(b, modulo, context=self)
> TypeError: wrapper __pow__ doesn't take keyword arguments
>
> I have no idea what keyword argument is getting passed to __pow__,
> anyone know what's going on?

Weird implementation hacks distorting error messages
Context.power() expects a Decimal instance as its first argument:

>>> from decimal import *
>>> ctx = getcontext()
>>> ctx.power(10, 2)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/decimal.py", line 2662, in power
return a.__pow__(b, modulo, context=self)
TypeError: wrapper __pow__ doesn't take keyword arguments
>>> ctx.power(Decimal("10"), 2)

Decimal("100")

Peter

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post python@lists.fastmail.net Python 0 07-19-2010 12:32 PM valpa Python 11 03-24-2009 07:11 AM Vitaliy Python 1 05-29-2008 10:36 AM Gilbert Fine Python 8 08-01-2007 01:58 AM Ven C++ 3 08-01-2006 03:56 PM