[tor-commits] [stem/master] Stylistic revisions

atagar at torproject.org atagar at torproject.org
Sun Jan 25 22:37:35 UTC 2015


commit 6484250c4000673074a261da95e1db3ed9d69db8
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Jan 25 13:23:14 2015 -0800

    Stylistic revisions
    
    Just some quick non-impactful stylistic revisions.
---
 stem/descriptor/networkstatus.py       |  117 +++++++++++++-------------------
 stem/descriptor/router_status_entry.py |   53 ++++-----------
 stem/descriptor/server_descriptor.py   |    3 -
 3 files changed, 64 insertions(+), 109 deletions(-)

diff --git a/stem/descriptor/networkstatus.py b/stem/descriptor/networkstatus.py
index a8ec38a..feb8b37 100644
--- a/stem/descriptor/networkstatus.py
+++ b/stem/descriptor/networkstatus.py
@@ -69,6 +69,12 @@ from stem.descriptor import (
   _parse_key_block,
 )
 
+from stem.descriptor.router_status_entry import (
+  RouterStatusEntryV2,
+  RouterStatusEntryV3,
+  RouterStatusEntryMicroV3,
+)
+
 # Version 2 network status document fields, tuples of the form...
 # (keyword, is_mandatory)
 
@@ -153,6 +159,37 @@ KEY_CERTIFICATE_PARAMS = (
   ('dir-key-certification', True),
 )
 
+# all parameters are constrained to int32 range
+MIN_PARAM, MAX_PARAM = -2147483648, 2147483647
+
+PARAM_RANGE = {
+  'circwindow': (100, 1000),
+  'CircuitPriorityHalflifeMsec': (-1, MAX_PARAM),
+  'perconnbwrate': (-1, MAX_PARAM),
+  'perconnbwburst': (-1, MAX_PARAM),
+  'refuseunknownexits': (0, 1),
+  'bwweightscale': (1, MAX_PARAM),
+  'cbtdisabled': (0, 1),
+  'cbtnummodes': (1, 20),
+  'cbtrecentcount': (3, 1000),
+  'cbtmaxtimeouts': (3, 10000),
+  'cbtmincircs': (1, 10000),
+  'cbtquantile': (10, 99),
+  'cbtclosequantile': (MIN_PARAM, 99),
+  'cbttestfreq': (1, MAX_PARAM),
+  'cbtmintimeout': (500, MAX_PARAM),
+  'UseOptimisticData': (0, 1),
+  'Support022HiddenServices': (0, 1),
+  'usecreatefast': (0, 1),
+  'UseNTorHandshake': (0, 1),
+  'FastFlagMinThreshold': (4, MAX_PARAM),
+  'NumDirectoryGuards': (0, 10),
+  'NumEntryGuards': (1, 10),
+  'GuardLifetime': (2592000, 157766400),  # min: 30 days, max: 1826 days
+  'NumNTorsPerTAP': (1, 100000),
+  'AllowNonearlyExtend': (0, 1),
+}
+
 
 def _parse_file(document_file, document_type = None, validate = True, is_microdescriptor = False, document_handler = DocumentHandler.ENTRIES, **kwargs):
   """
@@ -184,16 +221,11 @@ def _parse_file(document_file, document_type = None, validate = True, is_microde
     document_type = NetworkStatusDocumentV3
 
   if document_type == NetworkStatusDocumentV2:
-    document_type = NetworkStatusDocumentV2
-    router_type = stem.descriptor.router_status_entry.RouterStatusEntryV2
+    document_type, router_type = NetworkStatusDocumentV2, RouterStatusEntryV2
   elif document_type == NetworkStatusDocumentV3:
-    if not is_microdescriptor:
-      router_type = stem.descriptor.router_status_entry.RouterStatusEntryV3
-    else:
-      router_type = stem.descriptor.router_status_entry.RouterStatusEntryMicroV3
+    router_type = RouterStatusEntryMicroV3 if is_microdescriptor else RouterStatusEntryV3
   elif document_type == BridgeNetworkStatusDocument:
-    document_type = BridgeNetworkStatusDocument
-    router_type = stem.descriptor.router_status_entry.RouterStatusEntryV2
+    document_type, router_type = BridgeNetworkStatusDocument, RouterStatusEntryV2
   else:
     raise ValueError("Document type %i isn't recognized (only able to parse v2, v3, and bridge)" % document_type)
 
@@ -391,7 +423,7 @@ class NetworkStatusDocumentV2(NetworkStatusDocument):
     router_iter = stem.descriptor.router_status_entry._parse_file(
       document_file,
       validate,
-      entry_class = stem.descriptor.router_status_entry.RouterStatusEntryV2,
+      entry_class = RouterStatusEntryV2,
       entry_keyword = ROUTERS_START,
       section_end_keywords = (V2_FOOTER_START,),
       extra_args = (self,),
@@ -736,22 +768,16 @@ class NetworkStatusDocumentV3(NetworkStatusDocument):
     if validate and self.is_vote and len(self.directory_authorities) != 1:
       raise ValueError('Votes should only have an authority entry for the one that issued it, got %i: %s' % (len(self.directory_authorities), self.directory_authorities))
 
-    if not self.is_microdescriptor:
-      router_type = stem.descriptor.router_status_entry.RouterStatusEntryV3
-    else:
-      router_type = stem.descriptor.router_status_entry.RouterStatusEntryMicroV3
-
     router_iter = stem.descriptor.router_status_entry._parse_file(
       document_file,
       validate,
-      entry_class = router_type,
+      entry_class = RouterStatusEntryMicroV3 if self.is_microdescriptor else RouterStatusEntryV3,
       entry_keyword = ROUTERS_START,
       section_end_keywords = (FOOTER_START, V2_FOOTER_START),
       extra_args = (self,),
     )
 
     self.routers = dict((desc.fingerprint, desc) for desc in router_iter)
-
     self._footer(document_file, validate)
 
   def get_unrecognized_lines(self):
@@ -853,59 +879,14 @@ class NetworkStatusDocumentV3(NetworkStatusDocument):
     """
 
     for key, value in self.params.items():
-      # all parameters are constrained to int32 range
-      minimum, maximum = -2147483648, 2147483647
-
-      if key == 'circwindow':
-        minimum, maximum = 100, 1000
-      elif key == 'CircuitPriorityHalflifeMsec':
-        minimum = -1
-      elif key in ('perconnbwrate', 'perconnbwburst'):
-        minimum = 1
-      elif key == 'refuseunknownexits':
-        minimum, maximum = 0, 1
-      elif key == 'bwweightscale':
-        minimum = 1
-      elif key == 'cbtdisabled':
-        minimum, maximum = 0, 1
-      elif key == 'cbtnummodes':
-        minimum, maximum = 1, 20
-      elif key == 'cbtrecentcount':
-        minimum, maximum = 3, 1000
-      elif key == 'cbtmaxtimeouts':
-        minimum, maximum = 3, 10000
-      elif key == 'cbtmincircs':
-        minimum, maximum = 1, 10000
-      elif key == 'cbtquantile':
-        minimum, maximum = 10, 99
-      elif key == 'cbtclosequantile':
-        minimum, maximum = self.params.get('cbtquantile', minimum), 99
-      elif key == 'cbttestfreq':
-        minimum = 1
-      elif key == 'cbtmintimeout':
-        minimum = 500
+      minimum, maximum = PARAM_RANGE.get(key, (MIN_PARAM, MAX_PARAM))
+
+      # there's a few dynamic parameter ranges
+
+      if key == 'cbtclosequantile':
+        minimum = self.params.get('cbtquantile', minimum)
       elif key == 'cbtinitialtimeout':
         minimum = self.params.get('cbtmintimeout', minimum)
-      elif key == 'UseOptimisticData':
-        minimum, maximum = 0, 1
-      elif key == 'Support022HiddenServices':
-        minimum, maximum = 0, 1
-      elif key == 'usecreatefast':
-        minimum, maximum = 0, 1
-      elif key == 'UseNTorHandshake':
-        minimum, maximum = 0, 1
-      elif key == 'FastFlagMinThreshold':
-        minimum = 4
-      elif key == 'NumDirectoryGuards':
-        minimum, maximum = 0, 10
-      elif key == 'NumEntryGuards':
-        minimum, maximum = 1, 10
-      elif key == 'GuardLifetime':
-        minimum, maximum = 2592000, 157766400  # min: 30 days, max: 1826 days
-      elif key == 'NumNTorsPerTAP':
-        minimum, maximum = 1, 100000
-      elif key == 'AllowNonearlyExtend':
-        minimum, maximum = 0, 1
 
       if value < minimum or value > maximum:
         raise ValueError("'%s' value on the params line must be in the range of %i - %i, was %i" % (key, minimum, maximum, value))
@@ -1397,7 +1378,7 @@ class BridgeNetworkStatusDocument(NetworkStatusDocument):
     router_iter = stem.descriptor.router_status_entry._parse_file(
       document_file,
       validate,
-      entry_class = stem.descriptor.router_status_entry.RouterStatusEntryV2,
+      entry_class = RouterStatusEntryV2,
       extra_args = (self,),
     )
 
diff --git a/stem/descriptor/router_status_entry.py b/stem/descriptor/router_status_entry.py
index 292ec7e..e0421cd 100644
--- a/stem/descriptor/router_status_entry.py
+++ b/stem/descriptor/router_status_entry.py
@@ -403,41 +403,27 @@ class RouterStatusEntry(Descriptor):
     entries = _get_descriptor_components(content, validate)
 
     if validate:
-      self._check_constraints(entries)
-      self._parse(entries, validate)
-    else:
-      self._entries = entries
-
-  def _check_constraints(self, entries):
-    """
-    Does a basic check that the entries conform to this descriptor type's
-    constraints.
-
-    :param dict entries: keyword => (value, pgp key) entries
-
-    :raises: **ValueError** if an issue arises in validation
-    """
+      for keyword in self._required_fields():
+        if keyword not in entries:
+          raise ValueError("%s must have a '%s' line:\n%s" % (self._name(True), keyword, str(self)))
 
-    for keyword in self._required_fields():
-      if keyword not in entries:
-        raise ValueError("%s must have a '%s' line:\n%s" % (self._name(True), keyword, str(self)))
+      for keyword in self._single_fields():
+        if keyword in entries and len(entries[keyword]) > 1:
+          raise ValueError("%s can only have a single '%s' line, got %i:\n%s" % (self._name(True), keyword, len(entries[keyword]), str(self)))
 
-    for keyword in self._single_fields():
-      if keyword in entries and len(entries[keyword]) > 1:
-        raise ValueError("%s can only have a single '%s' line, got %i:\n%s" % (self._name(True), keyword, len(entries[keyword]), str(self)))
+      if 'r' != list(entries.keys())[0]:
+        raise ValueError("%s are expected to start with a 'r' line:\n%s" % (self._name(True), str(self)))
 
-    if 'r' != list(entries.keys())[0]:
-      raise ValueError("%s are expected to start with a 'r' line:\n%s" % (self._name(True), str(self)))
+      self._parse(entries, validate)
+    else:
+      self._entries = entries
 
   def _name(self, is_plural = False):
     """
     Name for this descriptor type.
     """
 
-    if is_plural:
-      return 'Router status entries'
-    else:
-      return 'Router status entry'
+    return 'Router status entries' if is_plural else 'Router status entry'
 
   def _required_fields(self):
     """
@@ -485,10 +471,7 @@ class RouterStatusEntryV2(RouterStatusEntry):
   })
 
   def _name(self, is_plural = False):
-    if is_plural:
-      return 'Router status entries (v2)'
-    else:
-      return 'Router status entry (v2)'
+    return 'Router status entries (v2)' if is_plural else 'Router status entry (v2)'
 
   def _required_fields(self):
     return ('r')
@@ -561,10 +544,7 @@ class RouterStatusEntryV3(RouterStatusEntry):
   })
 
   def _name(self, is_plural = False):
-    if is_plural:
-      return 'Router status entries (v3)'
-    else:
-      return 'Router status entry (v3)'
+    return 'Router status entries (v3)' if is_plural else 'Router status entry (v3)'
 
   def _required_fields(self):
     return ('r', 's')
@@ -621,10 +601,7 @@ class RouterStatusEntryMicroV3(RouterStatusEntry):
   })
 
   def _name(self, is_plural = False):
-    if is_plural:
-      return 'Router status entries (micro v3)'
-    else:
-      return 'Router status entry (micro v3)'
+    return 'Router status entries (micro v3)' if is_plural else 'Router status entry (micro v3)'
 
   def _required_fields(self):
     return ('r', 's', 'm')
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index b107b33..afcdac2 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -838,9 +838,6 @@ class BridgeDescriptor(ServerDescriptor):
     'router-digest': _parse_router_digest_line,
   })
 
-  def __init__(self, raw_contents, validate = True, annotations = None):
-    super(BridgeDescriptor, self).__init__(raw_contents, validate, annotations)
-
   def digest(self):
     return self._digest
 





More information about the tor-commits mailing list