[Python-checkins] python/dist/src/Lib sre.py,1.45,1.46 sre_compile.py,1.47,1.48

jvr@users.sourceforge.net jvr@users.sourceforge.net
Wed, 02 Jul 2003 13:03:06 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1:/tmp/cvs-serv23477/Lib

Modified Files:
	sre.py sre_compile.py 
Log Message:
Fix and test for bug #764548:
Use isinstance() instead of comparing types directly, to enable
subclasses of str and unicode to be used as patterns.
Blessed by /F.


Index: sre.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/sre.py,v
retrieving revision 1.45
retrieving revision 1.46
diff -C2 -d -r1.45 -r1.46
*** sre.py	14 Oct 2002 12:22:17 -0000	1.45
--- sre.py	2 Jul 2003 20:03:04 -0000	1.46
***************
*** 220,226 ****
          return p
      pattern, flags = key
!     if type(pattern) is _pattern_type:
          return pattern
!     if type(pattern) not in sre_compile.STRING_TYPES:
          raise TypeError, "first argument must be string or compiled pattern"
      try:
--- 220,226 ----
          return p
      pattern, flags = key
!     if isinstance(pattern, _pattern_type):
          return pattern
!     if not isinstance(pattern, sre_compile.STRING_TYPES):
          raise TypeError, "first argument must be string or compiled pattern"
      try:

Index: sre_compile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/sre_compile.py,v
retrieving revision 1.47
retrieving revision 1.48
diff -C2 -d -r1.47 -r1.48
*** sre_compile.py	19 Apr 2003 12:56:07 -0000	1.47
--- sre_compile.py	2 Jul 2003 20:03:04 -0000	1.48
***************
*** 429,438 ****
      code[skip] = len(code) - skip
  
- STRING_TYPES = [type("")]
- 
  try:
!     STRING_TYPES.append(type(unicode("")))
  except NameError:
!     pass
  
  def _code(p, flags):
--- 429,438 ----
      code[skip] = len(code) - skip
  
  try:
!     unicode
  except NameError:
!     STRING_TYPES = type("")
! else:
!     STRING_TYPES = (type(""), type(unicode("")))
  
  def _code(p, flags):
***************
*** 454,458 ****
      # internal: convert pattern list to internal format
  
!     if type(p) in STRING_TYPES:
          import sre_parse
          pattern = p
--- 454,458 ----
      # internal: convert pattern list to internal format
  
!     if isinstance(p, STRING_TYPES):
          import sre_parse
          pattern = p