[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [sbws/master] Reorder methods in BWV3Line
commit 992ea07eb0eb3baf232ca9c0278794ec632bca6f
Author: juga0 <juga@xxxxxxxxxx>
Date: Wed Aug 29 14:45:08 2018 +0000
Reorder methods in BWV3Line
1. magic methods
2. classmethods
3. staticmethods
4. properties
5. methods
---
sbws/lib/v3bwfile.py | 130 +++++++++++++++++++++++++--------------------------
1 file changed, 65 insertions(+), 65 deletions(-)
diff --git a/sbws/lib/v3bwfile.py b/sbws/lib/v3bwfile.py
index d663445..9324bde 100644
--- a/sbws/lib/v3bwfile.py
+++ b/sbws/lib/v3bwfile.py
@@ -249,39 +249,31 @@ class V3BWLine(object):
[setattr(self, k, v) for k, v in kwargs.items()
if k in BW_EXTRA_ARG_KEYVALUES]
- @property
- def bw_keyvalue_tuple_ls(self):
- """Return list of KeyValue Bandwidth Line tuples."""
- # sort the list to generate determinist headers
- keyvalue_tuple_ls = sorted([(k, v) for k, v in self.__dict__.items()
- if k in BW_KEYVALUES])
- return keyvalue_tuple_ls
-
- @property
- def bw_keyvalue_v110str_ls(self):
- """Return list of KeyValue Bandwidth Line strings following
- spec v1.1.0.
- """
- bw_keyvalue_str = [KEYVALUE_SEP_V110 .join([k, str(v)])
- for k, v in self.bw_keyvalue_tuple_ls]
- return bw_keyvalue_str
-
- @property
- def bw_strv110(self):
- """Return Bandwidth Line string following spec v1.1.0."""
- bw_line_str = BW_KEYVALUE_SEP_V110.join(
- self.bw_keyvalue_v110str_ls) + LINE_SEP
- if len(bw_line_str) > BW_LINE_SIZE:
- # if this is the case, probably there are too many KeyValues,
- # or the limit needs to be changed in Tor
- log.warn("The bandwidth line %s is longer than %s",
- len(bw_line_str), BW_LINE_SIZE)
- return bw_line_str
-
def __str__(self):
return self.bw_strv110
@classmethod
+ def from_results(cls, results):
+ success_results = [r for r in results if isinstance(r, ResultSuccess)]
+ # log.debug('len(success_results) %s', len(success_results))
+ node_id = '$' + results[0].fingerprint
+ bw = cls.bw_from_results(success_results)
+ kwargs = dict()
+ kwargs['nick'] = results[0].nickname
+ if getattr(results[0], 'master_key_ed25519'):
+ kwargs['master_key_ed25519'] = results[0].master_key_ed25519
+ kwargs['rtt'] = cls.rtt_from_results(success_results)
+ kwargs['time'] = cls.last_time_from_results(results)
+ kwargs.update(cls.result_types_from_results(results))
+ bwl = cls(node_id, bw, **kwargs)
+ return bwl
+
+ @classmethod
+ def from_data(cls, data, fingerprint):
+ assert fingerprint in data
+ return cls.from_results(data[fingerprint])
+
+ @classmethod
def from_bw_line_v110(cls, line):
assert isinstance(line, str)
kwargs = dict([kv.split(KEYVALUE_SEP_V110)
@@ -294,6 +286,24 @@ class V3BWLine(object):
return bw_line
@staticmethod
+ def last_time_from_results(results):
+ return unixts_to_isodt_str(round(max([r.time for r in results])))
+
+ @staticmethod
+ def rtt_from_results(results):
+ # convert from miliseconds to seconds
+ rtts = [(round(rtt * 1000)) for r in results for rtt in r.rtts]
+ rtt = round(median(rtts))
+ return rtt
+
+ @staticmethod
+ def result_types_from_results(results):
+ rt_dict = dict([(result_type_to_key(rt.value),
+ num_results_of_type(results, rt.value))
+ for rt in _ResultType])
+ return rt_dict
+
+ @staticmethod
def bw_from_results(results):
median_bw = median([dl['amount'] / dl['duration']
for r in results for dl in r.downloads])
@@ -319,44 +329,34 @@ class V3BWLine(object):
bw_kb = max(round(bw / 1024), 1)
return bw_kb
- @staticmethod
- def last_time_from_results(results):
- return unixts_to_isodt_str(round(max([r.time for r in results])))
-
- @staticmethod
- def rtt_from_results(results):
- # convert from miliseconds to seconds
- rtts = [(round(rtt * 1000)) for r in results for rtt in r.rtts]
- rtt = round(median(rtts))
- return rtt
-
- @staticmethod
- def result_types_from_results(results):
- rt_dict = dict([(result_type_to_key(rt.value),
- num_results_of_type(results, rt.value))
- for rt in _ResultType])
- return rt_dict
+ @property
+ def bw_keyvalue_tuple_ls(self):
+ """Return list of KeyValue Bandwidth Line tuples."""
+ # sort the list to generate determinist headers
+ keyvalue_tuple_ls = sorted([(k, v) for k, v in self.__dict__.items()
+ if k in BW_KEYVALUES])
+ return keyvalue_tuple_ls
- @classmethod
- def from_results(cls, results):
- success_results = [r for r in results if isinstance(r, ResultSuccess)]
- # log.debug('len(success_results) %s', len(success_results))
- node_id = '$' + results[0].fingerprint
- bw = cls.bw_from_results(success_results)
- kwargs = dict()
- kwargs['nick'] = results[0].nickname
- if getattr(results[0], 'master_key_ed25519'):
- kwargs['master_key_ed25519'] = results[0].master_key_ed25519
- kwargs['rtt'] = cls.rtt_from_results(success_results)
- kwargs['time'] = cls.last_time_from_results(results)
- kwargs.update(cls.result_types_from_results(results))
- bwl = cls(node_id, bw, **kwargs)
- return bwl
+ @property
+ def bw_keyvalue_v110str_ls(self):
+ """Return list of KeyValue Bandwidth Line strings following
+ spec v1.1.0.
+ """
+ bw_keyvalue_str = [KEYVALUE_SEP_V110 .join([k, str(v)])
+ for k, v in self.bw_keyvalue_tuple_ls]
+ return bw_keyvalue_str
- @classmethod
- def from_data(cls, data, fingerprint):
- assert fingerprint in data
- return cls.from_results(data[fingerprint])
+ @property
+ def bw_strv110(self):
+ """Return Bandwidth Line string following spec v1.1.0."""
+ bw_line_str = BW_KEYVALUE_SEP_V110.join(
+ self.bw_keyvalue_v110str_ls) + LINE_SEP
+ if len(bw_line_str) > BW_LINE_SIZE:
+ # if this is the case, probably there are too many KeyValues,
+ # or the limit needs to be changed in Tor
+ log.warn("The bandwidth line %s is longer than %s",
+ len(bw_line_str), BW_LINE_SIZE)
+ return bw_line_str
class V3BWFile(object):
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits