[PonyORM-list] Error on wrong line
Alexander Kozlovsky
alexander.kozlovsky at gmail.com
Mon Oct 27 18:52:53 UTC 2014
Hi Arthur!
Good point about documentation, I think we should change it as you said.
Regarding the exception, this is the standard Python behavior. Consider
this example:
x = 10
def func():
print(x)
x = 5
func()
If you run this example, you'll get the exception "UnboundLocalError: local
variable 'x' referenced before assignment" in the first line of the
function. This is because when Python parses the program text, it sees "x =
5" assignment and assumes that the x is a local name. It then uses name x
as a local name during all function body, even before "x = 5" line. You
cannot use name x as a global name in the beginning of the function and as
a local name in the end.
See for example:
http://stackoverflow.com/questions/9264763/unboundlocalerror-in-python
http://stackoverflow.com/questions/21456739/unboundlocalerror-local-variable-l-referenced-before-assignment-python
Regards,
Alexander
On Mon, Oct 27, 2014 at 9:27 PM, Goldberg, Arthur P <
arthur.p.goldberg at mssm.edu> wrote:
> Hi guys
>
> Generally, pony has been great. Thanks!
>
> However I think this is a bug. I ran the attached program, and it
> generates this call stack. The error is reported in line 202 but it is
> actually in line 203. I know that the ID in 203 overrides the db.entity
> class of that name, but I would think that the error does not exist until
> line 203.
>
> Traceback (most recent call last):
> File "../geneticsSubjects.py", line 212, in <module>
> dumpIDs()
> File "<auto generated wrapper of dumpIDs() function>", line 2, in dumpIDs
> File
> "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pony/orm/core.py",
> line 345, in new_func
> try: return func(*args, **kwargs)
> File "../geneticsSubjects.py", line 202, in dumpIDs
> print( ID.__header__() )
> UnboundLocalError: local variable 'ID' referenced before assignment
>
>
>
> Also, I have a documentation suggestion.for example, your documentation
> says:
>
> for p in select(p for p in Product):
> print p.name, p.price
>
> whereas it is more convenient to say:
>
> for p in Product.select():
>
>
>
>
> _______________________________________________
> ponyorm-list mailing list
> ponyorm-list at ponyorm.org
> /ponyorm-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </ponyorm-list/attachments/20141027/e3a5b0a6/attachment-0001.html>
More information about the ponyorm-list
mailing list