Author: andar

Revision: 5665

Log:
        Do not use property decorators as 2.5 does not support .setter et al

Diff:
Modified: trunk/deluge/maketorrent.py
===================================================================
--- trunk/deluge/maketorrent.py 2009-08-12 08:20:19 UTC (rev 5664)
+++ trunk/deluge/maketorrent.py 2009-08-12 21:18:39 UTC (rev 5665)
@@ -52,19 +52,19 @@
     16KiB.
     """
     pass
-    
+
 class TorrentMetadata(object):
     """
     This class is used to create .torrent files.
-    
+
     *** Usage ***
-    
+
     >>> t = TorrentMetadata()
     >>> t.data_path = "/tmp/torrent"
     >>> t.comment = "My Test Torrent"
     >>> t.trackers = [["http://tracker.openbittorent.com";]]
     >>> t.save("/tmp/test.torrent")
-    
+
     """
     def __init__(self):
         self.__data_path = None
@@ -78,15 +78,15 @@
     def save(self, torrent_path, progress=None):
         """
         Creates and saves the torrent file to `path`.
-        
+
         :param torrent_path: where to save the torrent file
         :type torrent_path: string
-        
+
         :param progress: a function to be called when a piece is hashed
         :type progress: function(num_completed, num_pieces)
-        
+
         :raises InvalidPath: if the data_path has not been set
-        
+
         """
         if not self.data_path:
             raise InvalidPath("Need to set a data_path!")
@@ -94,19 +94,19 @@
         torrent = {
             "info": {}
             }
-            
+
         if self.comment:
             torrent["comment"] = self.comment.encode("UTF-8")
-        
+
         if self.private:
             torrent["info"]["private"] = True
-        
+
         if self.trackers:
             torrent["announce"] = self.trackers[0][0]
             torrent["announce-list"] = self.trackers
         else:
             torrent["announce"] = ""
-        
+
         if self.webseeds:
             httpseeds = []
             webseeds = []
@@ -120,7 +120,7 @@
                 torrent["httpseeds"] = httpseeds
             if webseeds:
                 torrent["url-list"] = webseeds
-        
+
         datasize = get_path_size(self.data_path)
 
         if not self.piece_size:
@@ -128,13 +128,13 @@
             psize = 16384
             while (datasize / psize) > 1024:
                 psize *= 2
-            
+
             self.piece_size = psize
 
         # Calculate the number of pieces we will require for the data
         num_pieces = datasize / self.piece_size
         torrent["info"]["piece length"] = self.piece_size
-        
+
         # Create the info
         if os.path.isdir(self.data_path):
             torrent["info"]["name"] = os.path.split(self.data_path)[1]
@@ -159,8 +159,8 @@
                             p[-1] = "_____padding_file_" + str(padding_count)
                             files.append((self.piece_size - left, p))
                             padding_count += 1
-            
 
+
             # Run the progress function with 0 completed pieces
             if progress:
                 progress(0, num_pieces)
@@ -198,7 +198,7 @@
                 if progress:
                     progress(len(pieces), num_pieces)
                 buf = ""
-            
+
             torrent["info"]["pieces"] = "".join(pieces)
             torrent["info"]["files"] = fs
 
@@ -206,8 +206,8 @@
             torrent["info"]["name"] = os.path.split(self.data_path)[1]
             torrent["info"]["length"] = get_path_size(self.data_path)
             pieces = []
-            
-            fd = open(self.data_path, "rb")      
+
+            fd = open(self.data_path, "rb")
             r = fd.read(self.piece_size)
             while r:
                 pieces.append(sha(r).digest())
@@ -215,144 +215,137 @@
                     progress(len(pieces), num_pieces)
 
                 r = fd.read(self.piece_size)
-            
+
             torrent["info"]["pieces"] = "".join(pieces)
-        
+
         # Write out the torrent file
         open(torrent_path, "wb").write(bencode(torrent))
-        
-    @property
-    def data_path(self):
+
+    def get_data_path(self):
         """
         The path to the files that the torrent will contain.  It can be either
         a file or a folder.  This property needs to be set before the torrent
         file can be created and saved.
         """
         return self.__data_path
-    
-    @data_path.setter
-    def data_path(self, path):
+
+    def set_data_path(self, path):
         """
         :param path: the path to the data
         :type path: string
-        
+
         :raises InvalidPath: if the path is not found
-        
+
         """
         if os.path.exists(path) and (os.path.isdir(path) or 
os.path.isfile(path)):
             self.__data_path = path
         else:
             raise InvalidPath("No such file or directory: %s" % path)
 
-    @property
-    def piece_size(self):
+    def get_piece_size(self):
         """
         The size of pieces in bytes.  The size must be a multiple of 16KiB.
         If you don't set a piece size, one will be automatically selected to
         produce a torrent with less than 1024 pieces.
-        
+
         """
         return self.__piece_size
-    
-    @piece_size.setter
-    def piece_size(self, size):
+
+    def set_piece_size(self, size):
         """
         :param size: the desired piece size in bytes
-        
+
         :raises InvalidPieceSize: if the piece size is not a multiple of 16KiB
-        
+
         """
         if size % 16384 and size:
             raise InvalidPieceSize("Piece size must be a multiple of 16384")
         self.__piece_size = size
-        
-    @property
-    def comment(self):
+
+    def get_comment(self):
         """
         Comment is some extra info to be stored in the torrent.  This is
         typically an informational string.
         """
         return self.__comment
-    
-    @comment.setter
-    def comment(self, comment):
+
+    def set_comment(self, comment):
         """
         :param comment: an informational string
         :type comment: string
         """
         self.__comment = comment
-    
-    @property
-    def private(self):
+
+    def get_private(self):
         """
         Private torrents only announce to the tracker and will not use DHT or
         Peer Exchange.
-        
+
         See: http://bittorrent.org/beps/bep_0027.html
-        
+
         """
         return self.__private
-    
-    @private.setter
-    def private(self, private):
+
+    def set_private(self, private):
         """
         :param private: True if the torrent is to be private
         :type private: bool
         """
         self.__private = private
-    
-    @property
-    def trackers(self):
+
+    def get_trackers(self):
         """
         The announce trackers is a list of lists.
-        
+
         See: http://bittorrent.org/beps/bep_0012.html
-        
+
         """
         return self.__trackers
-    
-    @trackers.setter
-    def trackers(self, trackers):
+
+    def set_trackers(self, trackers):
         """
         :param trackers: a list of lists of trackers, each list is a tier
         :type trackers: list of list of strings
         """
         self.__trackers = trackers
 
-    @property
-    def webseeds(self):
+    def get_webseeds(self):
         """
         The web seeds can either be:
         Hoffman-style: http://bittorrent.org/beps/bep_0017.html
         or,
         GetRight-style: http://bittorrent.org/beps/bep_0019.html
-        
+
         If the url ends in '.php' then it will be considered Hoffman-style, if
         not it will be considered GetRight-style.
         """
         return self.__web_seeds
-    
-    @webseeds.setter
-    def webseeds(self, webseeds):
+
+    def set_webseeds(self, webseeds):
         """
         :param webseeds: the webseeds which can be either Hoffman or GetRight 
style
         :type webseeds: list of urls
         """
         self.__webseeds = webseeds
 
-    @property
-    def pad_files(self):
+    def get_pad_files(self):
         """
         If this is True, padding files will be added to align files on piece
         boundaries.
         """
         return self.__pad_files
-    
-    @pad_files.setter
-    def pad_files(self, pad):
+
+    def set_pad_files(self, pad):
         """
         :param pad: set True to align files on piece boundaries
         :type pad: bool
         """
         self.__pad_files = pad
 
+    data_path = property(get_data_path, set_data_path)
+    piece_size = property(get_piece_size, set_piece_size)
+    comment = property(get_comment, set_comment)
+    private = property(get_private, set_private)
+    trackers = property(get_trackers, set_trackers)
+    webseeds = property(get_webseeds, set_webseeds)
+    pad_files = property(get_pad_files, set_pad_files)



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to