Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-11 Thread Casey Duncan
On Wednesday 11 December 2002 03:43 am, Dmitry Vasiliev wrote:
 Casey Duncan wrote:
  On Tuesday 10 December 2002 03:14 pm, Guido van Rossum wrote:
  
 Can we get the same patch without the generic except:, please?
 
 the last thing I want is a database corruption caused by resizing the
 Edit box...
 
 Why would this particular except clause cause database corruption?
  
  I think Leonard is refering to catching ConflictErrors. However I don't 
think 
  int() touches the database ;^).
 
 I saw try: int() except: pattern in many places through all the Zope 
 code. I think catching ValueError only does the job, but then we should 
 replace it in all the places. :-)

Nope, as Guido pointed out (and he should know ;^), Int can raise miriad 
exceptions. not just ValueError.

IMO as long as the int is the *only* thing happening in the try block and you 
comment the bare except, then we are ok. Changing the except clause will only 
introduce bugs.

-Casey


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-11 Thread Guido van Rossum
 I saw try: int() except: pattern in many places through all the Zope 
 code. I think catching ValueError only does the job, but then we should 
 replace it in all the places. :-)

Yes, catching ValueError is sufficient for string conversions to int.

I thought you could get an OverflowError, but that can only happen
when the input is a Python long or float -- int(999)
raises ValueError, as does int(xxx).

--Guido van Rossum (home page: http://www.python.org/~guido/)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-11 Thread Guido van Rossum
 I think this would be a useful note for the Zope3 style guide.
 
 
 What exceptions can int() raise?
 
 On converting a preexisting value to an int:
 
ValueError, OverflowError, TypeError, AttributeError
 
(Any others?)
 
 On converting an instance that implements __int__:
 
Anything at all.
It can even return a non-int value.
 
 On evaluating the expression inside the int() brackets:
 
Anything at all.

Anything can raise MemoryError.

On converting an 8bit string to an int:

 ValueError *only*

On converting a Unicode string to an int:

 ValueError
 UnicodeError (or UnicodeEncodeError, which is a subclass of it)

--Guido van Rossum (home page: http://www.python.org/~guido/)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-11 Thread Guido van Rossum
  Anything can raise MemoryError.
 
 Ok. But I don't think regular application code should catch these.

Correct.

  On converting an 8bit string to an int:
  
   ValueError *only*
 
 Ok.
 
  On converting a Unicode string to an int:
  
   ValueError
   UnicodeError (or UnicodeEncodeError, which is a subclass of it)
 
 Can you provide an example of raising a unicode error like this:
 
u = makeUnicodeString()  # your choice of function
int(u)

In Python 2.3, I get this:

   int(u\u1234)
  Traceback (most recent call last):
File stdin, line 1, in ?
  UnicodeEncodeError: 'decimal' codec can't encode character '\u1234' in position 0: 
invalid decimal Unicode string
   

In Python 2.2, this raises ValueError.

I think I may have to report this as a bug in Python 2.3 though.

 My point is that once you have a valid unicode object, I don't see how 
 calling int(valid_unicode_object) will raise a UnicodeError.
 
 If this is so, then the style should be:
 
value = expression_to_compute_value
try:
i = int(value)
except ValueError:
# take corrective action
 
 rather than:
 
try:
i = int(expression_to_compute_value)
except:  # Note: calling 'int()' can raise just about anything
# take corrective action

Even if we decide that we have to use a bare except after all, the
expression_to_compute_value should still be moved outside the
try/except.

--Guido van Rossum (home page: http://www.python.org/~guido/)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-11 Thread Guido van Rossum
  Can you provide an example of raising a unicode error like this:
  
 u = makeUnicodeString()  # your choice of function
 int(u)
 
 In Python 2.3, I get this:
 
int(u\u1234)
   Traceback (most recent call last):
 File stdin, line 1, in ?
   UnicodeEncodeError: 'decimal' codec can't encode character '\u1234' in position 0: 
invalid decimal Unicode string

 
 In Python 2.2, this raises ValueError.

I spoke too soon.  UnicodeEncodeError is a subclass of ValueError.  So
catching ValueError from int(str_or_unicode) is the way to go.  Who's
writing that Zope 3 style guide again?

--Guido van Rossum (home page: http://www.python.org/~guido/)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



[Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-10 Thread Dmitry Vasiliev
Hi All!

Zope 2.6: pressing of Taller or Shorter buttons of the page template 
edit window raises ValueError. Patch attached.

--
Dmitry Vasiliev (dima at hlabs.spb.ru)
Index: ZopePageTemplate.py
===
RCS file: /cvs-repository/Zope/lib/python/Products/PageTemplates/ZopePageTemplate.py,v
retrieving revision 1.44
diff -u -r1.44 ZopePageTemplate.py
--- ZopePageTemplate.py 18 Sep 2002 15:12:46 -  1.44
+++ ZopePageTemplate.py 10 Dec 2002 14:33:43 -
@@ -155,8 +155,11 @@
 cols = min(cols, 100) # Max width 100%
 cols = %d%% % cols # Add percent sign back on
 else: # Absolute width
-try: cols = int(width)
-except: cols = max(40, int(dtpref_cols) + szchw.get(width, 0))
+try:
+cols = int(width)
+except:
+cols = max(40, int(dtpref_cols[:-1]) + szchw.get(width, 0))
+cols = %d%% % cols # Add percent sign back on
 
 try: rows = int(height)
 except: rows = max(1, int(dtpref_rows) + szchh.get(height, 0))



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-10 Thread Casey Duncan
Please submit a collector issue for this http://collector.zope.org/Zope so the 
patch doesn't get lost.

Thanks.

-Casey

On Tuesday 10 December 2002 10:07 am, Dmitry Vasiliev wrote:
 Hi All!
 
 Zope 2.6: pressing of Taller or Shorter buttons of the page template 
 edit window raises ValueError. Patch attached.
 
 -- 
 Dmitry Vasiliev (dima at hlabs.spb.ru)
 


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-10 Thread Guido van Rossum
 Can we get the same patch without the generic except:, please?
 
 the last thing I want is a database corruption caused by resizing the
 Edit box...

Why would this particular except clause cause database corruption?

int() happens to raise a bunch of different exceptions, and I think
an unqualified except: clause is okay here (though it needs a
comment).

Also note that the unpatched code has an unqualified except: already,
so you can't really blame Dmitry.

--Guido van Rossum (home page: http://www.python.org/~guido/)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] BUG: ValueError while changing height of the template edit window

2002-12-10 Thread Casey Duncan
On Tuesday 10 December 2002 03:14 pm, Guido van Rossum wrote:
  Can we get the same patch without the generic except:, please?
  
  the last thing I want is a database corruption caused by resizing the
  Edit box...
 
 Why would this particular except clause cause database corruption?

I think Leonard is refering to catching ConflictErrors. However I don't think 
int() touches the database ;^).
 
 int() happens to raise a bunch of different exceptions, and I think
 an unqualified except: clause is okay here (though it needs a
 comment).

Yup and please reformat the other try: except: if you reformat the first one.
 
 Also note that the unpatched code has an unqualified except: already,
 so you can't really blame Dmitry.

I say blame Canada!

-Casey


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )