Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_literal_list_becomes_a_pvector():
x = [1, 2]
assert type(x) is type(v())
assert x == v(1, 2)
def test_list_comprehension_becomes_a_pvector():
x = [i for i in range(2)]
assert type(x) is type(v())
assert x == v(0, 1)
def test_literal_list_with_function_call_becomes_a_pvector():
x = [1, 2].append(3)
assert type(x) is type(v())
assert x == v(1, 2, 3)
def _flatten_sentence(sentence: ETree.Element) \
-> List[Tuple[Text, Sequence[LevelAnnotation]]]:
# TODO docs
"""
Convert a `sentence` XML Element object into normal text.
:param sentence: an sentence XML node
:return: a list of strings with corresponding annotations
"""
def isterminal(element: ETree.Element):
return next(iter(element), None) is None
def getanno(element: ETree.Element):
return element.get(ANNO_TAG, None)
stack = [(sentence, iter(sentence), v())]
texts = [sentence.text]
annotations = [stack[0][2]]
while stack:
node, children, anno = stack[-1]
child = next(children, None)
if child is None:
stack.pop()
texts.append(node.tail)
annotations.append(anno[:-1])
continue
child_anno = anno.append(
LevelAnnotation(len(anno), getanno(child), isterminal(child)))
texts.append(child.text)
annotations.append(child_anno)
stack.append((child, iter(child), child_anno))
# TODO docs
"""
Returns a list of cummulative start/stop positions for segments in `texts`.
:param texts: a list of strings
:return: list of (start position, stop position)
>>> _segment_borders(['amino acid', 'is any']) == [(0, 10), (10, 16)]
True
"""
def aggregate_boundaries(boundaries: pvector, text):
return (
boundaries + [(boundaries[-1][1], boundaries[-1][1] + len(text))]
if boundaries else v((0, len(text)))
)
return list(reduce(aggregate_boundaries, texts, v()))
def aggregate_boundaries(boundaries: pvector, text):
return (
boundaries + [(boundaries[-1][1], boundaries[-1][1] + len(text))]
if boundaries else v((0, len(text)))
)
def aggregate_boundaries(boundaries: pvector, text):
return (
boundaries + [(boundaries[-1][1], boundaries[-1][1] + len(text))]
if boundaries else v((0, len(text)))
)
def _flatten_sentence(sentence: ETree.Element) \
-> List[Tuple[Text, Sequence[LevelAnnotation]]]:
# TODO docs
"""
Convert a `sentence` XML Element object into normal text.
:param sentence: an sentence XML node
:return: a list of strings with corresponding annotations
"""
def isterminal(element: ETree.Element):
return next(iter(element), None) is None
def getanno(element: ETree.Element):
return element.get(ANNO_TAG, None)
stack = [(sentence, iter(sentence), v())]
texts = [sentence.text]
annotations = [stack[0][2]]
while stack:
node, children, anno = stack[-1]
child = next(children, None)
if child is None:
stack.pop()
texts.append(node.tail)
annotations.append(anno[:-1])
continue
child_anno = anno.append(
LevelAnnotation(len(anno), getanno(child), isterminal(child)))
texts.append(child.text)
annotations.append(child_anno)
stack.append((child, iter(child), child_anno))
downstream_executor,
handler=standard_handler,
format_string=DEFAULT_FORMAT,
):
self.downstream_executor = downstream_executor
self.TASK_CONFIG_INTERFACE = downstream_executor.TASK_CONFIG_INTERFACE
self.handler = handler
self.format_string = format_string
self.src_queue = downstream_executor.get_event_queue()
self.dest_queue = Queue()
self.stopping = False
self.staging_tasks = m()
self.running_tasks = m()
self.done_tasks = v()
# A lock is needed to synchronize logging and event processing
self.task_lock = Lock()
self.event_thread = Thread(target=self.event_loop)
self.event_thread.daemon = True
self.event_thread.start()
self.logging_thread = Thread(target=self.logging_loop)
self.logging_thread.daemon = True
self.logging_thread.start()