[Python-checkins] python/nondist/peps/docutils nodes.py,1.1,1.2 statemachine.py,1.1,1.2

goodger@users.sourceforge.net goodger@users.sourceforge.net
Thu, 02 Jan 2003 20:06:28 -0800


Update of /cvsroot/python/python/nondist/peps/docutils
In directory sc8-pr-cvs1:/tmp/cvs-serv9606

Modified Files:
	nodes.py statemachine.py 
Log Message:
More Python 2.3 & PyXML compatibility updates

Index: nodes.py
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/docutils/nodes.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** nodes.py	8 Nov 2002 23:47:51 -0000	1.1
--- nodes.py	3 Jan 2003 04:06:26 -0000	1.2
***************
*** 58,63 ****
  
      def asdom(self, dom=xml.dom.minidom):
!         """Return a DOM representation of this Node."""
!         return self._dom_node(dom)
  
      def pformat(self, indent='    ', level=0):
--- 58,64 ----
  
      def asdom(self, dom=xml.dom.minidom):
!         """Return a DOM **fragment** representation of this Node."""
!         domroot = dom.Document()
!         return self._dom_node(domroot)
  
      def pformat(self, indent='    ', level=0):
***************
*** 181,188 ****
          return '<%s: %s>' % (self.tagname, data)
  
!     def _dom_node(self, dom):
!         return dom.Text(self.data)
! 
!     def _rooted_dom_node(self, domroot):
          return domroot.createTextNode(self.data)
  
--- 182,186 ----
          return '<%s: %s>' % (self.tagname, data)
  
!     def _dom_node(self, domroot):
          return domroot.createTextNode(self.data)
  
***************
*** 261,273 ****
              self.tagname = self.__class__.__name__
  
!     def _dom_node(self, dom):
!         element = dom.Element(self.tagname)
!         for attribute, value in self.attributes.items():
!             element.setAttribute(attribute, str(value))
!         for child in self.children:
!             element.appendChild(child._dom_node(dom))
!         return element
! 
!     def _rooted_dom_node(self, domroot):
          element = domroot.createElement(self.tagname)
          for attribute, value in self.attributes.items():
--- 259,263 ----
              self.tagname = self.__class__.__name__
  
!     def _dom_node(self, domroot):
          element = domroot.createElement(self.tagname)
          for attribute, value in self.attributes.items():
***************
*** 276,280 ****
              element.setAttribute(attribute, str(value))
          for child in self.children:
!             element.appendChild(child._rooted_dom_node(domroot))
          return element
  
--- 266,270 ----
              element.setAttribute(attribute, str(value))
          for child in self.children:
!             element.appendChild(child._dom_node(domroot))
          return element
  
***************
*** 336,340 ****
              return self.children[key]
          elif isinstance(key, SliceType):
!             assert key.step is None, 'cannot handle slice with stride'
              return self.children[key.start:key.stop]
          else:
--- 326,330 ----
              return self.children[key]
          elif isinstance(key, SliceType):
!             assert key.step in (None, 1), 'cannot handle slice with stride'
              return self.children[key.start:key.stop]
          else:
***************
*** 349,353 ****
              self.children[key] = item
          elif isinstance(key, SliceType):
!             assert key.step is None, 'cannot handle slice with stride'
              for node in item:
                  self.setup_child(node)
--- 339,343 ----
              self.children[key] = item
          elif isinstance(key, SliceType):
!             assert key.step in (None, 1), 'cannot handle slice with stride'
              for node in item:
                  self.setup_child(node)
***************
*** 363,367 ****
              del self.children[key]
          elif isinstance(key, SliceType):
!             assert key.step is None, 'cannot handle slice with stride'
              del self.children[key.start:key.stop]
          else:
--- 353,357 ----
              del self.children[key]
          elif isinstance(key, SliceType):
!             assert key.step in (None, 1), 'cannot handle slice with stride'
              del self.children[key.start:key.stop]
          else:
***************
*** 702,707 ****
  
      def asdom(self, dom=xml.dom.minidom):
          domroot = dom.Document()
!         domroot.appendChild(self._rooted_dom_node(domroot))
          return domroot
  
--- 692,698 ----
  
      def asdom(self, dom=xml.dom.minidom):
+         """Return a DOM representation of this document."""
          domroot = dom.Document()
!         domroot.appendChild(self._dom_node(domroot))
          return domroot
  

Index: statemachine.py
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/docutils/statemachine.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** statemachine.py	8 Nov 2002 23:47:51 -0000	1.1
--- statemachine.py	3 Jan 2003 04:06:26 -0000	1.2
***************
*** 111,114 ****
--- 111,115 ----
  import sys
  import re
+ from types import SliceType as _SliceType
  
  
***************
*** 1105,1124 ****
      def __len__(self): return len(self.data)
  
      def __getitem__(self, i):
!         try:
!             return self.data[i]
!         except TypeError:
!             assert i.step is None, 'cannot handle slice with stride'
              return self.__class__(self.data[i.start:i.stop],
                                    items=self.items[i.start:i.stop],
                                    parent=self, parent_offset=i.start)
  
      def __setitem__(self, i, item):
!         try:
!             self.data[i] = item
!             if self.parent:
!                 self.parent[i + self.parent_offset] = item
!         except TypeError:
!             assert i.step is None, 'cannot handle slice with stride'
              if not isinstance(item, ViewList):
                  raise TypeError('assigning non-ViewList to ViewList slice')
--- 1106,1126 ----
      def __len__(self): return len(self.data)
  
+     # The __getitem__()/__setitem__() methods check whether the index
+     # is a slice first, since native list objects start supporting
+     # them directly in Python 2.3 (no exception is raised when
+     # indexing a list with a slice object; they just work).
+ 
      def __getitem__(self, i):
!         if isinstance(i, _SliceType):
!             assert i.step in (None, 1),  'cannot handle slice with stride'
              return self.__class__(self.data[i.start:i.stop],
                                    items=self.items[i.start:i.stop],
                                    parent=self, parent_offset=i.start)
+         else:
+             return self.data[i]
  
      def __setitem__(self, i, item):
!         if isinstance(i, _SliceType):
!             assert i.step in (None, 1), 'cannot handle slice with stride'
              if not isinstance(item, ViewList):
                  raise TypeError('assigning non-ViewList to ViewList slice')
***************
*** 1129,1132 ****
--- 1131,1138 ----
                  self.parent[i.start + self.parent_offset
                              : i.stop + self.parent_offset] = item
+         else:
+             self.data[i] = item
+             if self.parent:
+                 self.parent[i + self.parent_offset] = item
  
      def __delitem__(self, i):