[tor-commits] [stem/master] TODO note to expand Descriptor.create()
atagar at torproject.org
atagar at torproject.org
Fri Oct 2 23:16:05 UTC 2020
commit e2ef267c68e43de7fa9b9fd126192c037bd04a24
Author: Damian Johnson <atagar at torproject.org>
Date: Sat Sep 26 15:11:25 2020 -0700
TODO note to expand Descriptor.create()
TODO note to expand our Descriptor's create() and content() methods. These were
originally private methods within our tests. I productionized and opened them
for Isis so BridgeDB could replace Lector.
We use descriptor content as their input arguments for a couple reasons...
1. It's agnostic to the descriptor type, so all Descriptors can largely share
a constructor.
2. This was the input our tests originally wanted to make test descriptors
from.
However, it makes creating descriptors cumbersome. For instance, if I
simply want to make a server descriptor with my nickname I need to run...
RelayDescriptor.create({'router': 'caerSidi 71.35.133.197 9001 0 0'})
Wouldn't this be a lot better if it was simply the following?
RelayDescriptor.create(nickname = 'caerSidi')
However, doing this is easier said than done. Doing so will require reverse
mapping attributes to line content (that is to say, convert 'nickname ='
into something like the above router line.
Oh well. Project for another time when I rethink our Descriptor APIs.
---
stem/descriptor/__init__.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 58a88d55..3f10bc57 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -921,6 +921,9 @@ class Descriptor(object):
* **NotImplementedError** if not implemented for this descriptor type
"""
+ # TODO: add support for creating descriptors with preset parameters (rather
+ # than line content)
+
return cls(cls.content(attr, exclude), validate = validate) # type: ignore
def type_annotation(self) -> 'stem.descriptor.TypeAnnotation':
More information about the tor-commits
mailing list