summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/stanzabase.py
diff options
context:
space:
mode:
authorTom Nichols <tmnichols@gmail.com>2010-05-13 13:48:27 -0400
committerTom Nichols <tmnichols@gmail.com>2010-05-13 13:48:27 -0400
commit341c110b6ad0922cb47494e493fe8075e00cad65 (patch)
tree7d07a4166213ee1e8d067d6daee0185b96533005 /sleekxmpp/xmlstream/stanzabase.py
parenta92075a659866f611e7eefca6bf92b56272e48bd (diff)
parent7522839141e7dd5bd081a421a58b0962b705fdda (diff)
downloadslixmpp-341c110b6ad0922cb47494e493fe8075e00cad65.tar.gz
slixmpp-341c110b6ad0922cb47494e493fe8075e00cad65.tar.bz2
slixmpp-341c110b6ad0922cb47494e493fe8075e00cad65.tar.xz
slixmpp-341c110b6ad0922cb47494e493fe8075e00cad65.zip
Merge branch 'master' of git@github.com:tomstrummer/SleekXMPP into hacks
Diffstat (limited to 'sleekxmpp/xmlstream/stanzabase.py')
-rw-r--r--sleekxmpp/xmlstream/stanzabase.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/sleekxmpp/xmlstream/stanzabase.py b/sleekxmpp/xmlstream/stanzabase.py
index 57c727a3..018e81c3 100644
--- a/sleekxmpp/xmlstream/stanzabase.py
+++ b/sleekxmpp/xmlstream/stanzabase.py
@@ -9,6 +9,7 @@ from xml.etree import cElementTree as ET
import logging
import traceback
import sys
+import weakref
if sys.version_info < (3,0):
from . import tostring26 as tostring
@@ -51,7 +52,10 @@ class ElementBase(tostring.ToString):
subitem = None
def __init__(self, xml=None, parent=None):
- self.parent = parent
+ if parent is None:
+ self.parent = None
+ else:
+ self.parent = weakref.ref(parent)
self.xml = xml
self.plugins = {}
self.iterables = []
@@ -158,7 +162,7 @@ class ElementBase(tostring.ToString):
else:
self.xml.append(new)
if self.parent is not None:
- self.parent.xml.append(self.xml)
+ self.parent().xml.append(self.xml)
return True #had to generate XML
else:
return False
@@ -302,9 +306,9 @@ class ElementBase(tostring.ToString):
self.xml.append(xml)
return self
- def __del__(self):
- if self.parent is not None:
- self.parent.xml.remove(self.xml)
+ #def __del__(self): #prevents garbage collection of reference cycle
+ # if self.parent is not None:
+ # self.parent.xml.remove(self.xml)
class StanzaBase(ElementBase):
name = 'stanza'