Best Python code snippet using pytest-asyncio_python
boolean.py
Source:boolean.py
1#!/usr/bin/env python2#3# Copyright (c) 2019 Opticks Team. All Rights Reserved.4#5# This file is part of Opticks6# (see https://bitbucket.org/simoncblyth/opticks).7#8# Licensed under the Apache License, Version 2.0 (the "License"); 9# you may not use this file except in compliance with the License. 10# You may obtain a copy of the License at11#12# http://www.apache.org/licenses/LICENSE-2.013#14# Unless required by applicable law or agreed to in writing, software 15# distributed under the License is distributed on an "AS IS" BASIS, 16# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17# See the License for the specific language governing permissions and 18# limitations under the License.19#20"""21This is going the way of the dodo... due to state table bugs,22moving to the XRT language generated from the C enums23"""24from intersect import DIFFERENCE, UNION, INTERSECTION, desc25# intersect status26Enter = 127Exit = 228Miss = 329desc_state = { Enter : "Enter", Exit : "Exit", Miss : "Miss" }30# acts31NONE = 032RetMiss = 0x1 << 0 33RetL = 0x1 << 1 34RetR = 0x1 << 2 35RetLIfCloser = 0x1 << 3 36RetRIfCloser = 0x1 << 437LoopL = 0x1 << 5 38LoopLIfCloser = 0x1 << 639LoopR = 0x1 << 7 40LoopRIfCloser = 0x1 << 841FlipR = 0x1 << 942RetFlippedRIfCloser = 0x1 << 1043BooleanStart = 0x1 << 1144BooleanError = 0x1 << 1245IterativeError = 0x1 << 1346_act_index = {47 RetMiss:0,48 RetL:1,49 RetR:2,50 RetLIfCloser:3,51 RetRIfCloser:4,52 LoopL:5,53 LoopLIfCloser:6,54 LoopR:7,55 LoopRIfCloser:8,56 FlipR:9,57 RetFlippedRIfCloser:10,58 BooleanStart:11,59 BooleanError:12,60 IterativeError:13,61}62def act_index(act):63 return _act_index[act]64 65def desc_acts(acts):66 s = ""67 if acts & RetMiss: s+= "RetMiss "68 if acts & RetL: s+= "RetL "69 if acts & RetR: s+= "RetR "70 if acts & RetLIfCloser: s+= "RetLIfCloser "71 if acts & RetRIfCloser: s+= "RetRIfCloser "72 if acts & RetFlippedRIfCloser: s+= "RetFlippedRIfCloser "73 if acts & LoopL: s+= "LoopL "74 if acts & LoopLIfCloser:s+= "LoopLIfCloser "75 if acts & LoopR: s+= "LoopR "76 if acts & LoopRIfCloser:s+= "LoopRIfCloser "77 if acts & FlipR: s+= "FlipR "78 if acts & BooleanStart: s+= "BooleanStart"79 if acts & BooleanError: s+= "BooleanError"80 if acts & IterativeError: s+= "IterativeError"81 #if acts & ResumeFromLoopL: s+= "ResumeFromLoopL "82 #if acts & ResumeFromLoopR: s+= "ResumeFromLoopR "83 #if acts & NewTranche: s+= "NewTranche "84 return s 85#86# note that although two loopers do appear together "LoopLIfCloser | LoopRIfCloser" 87# they are always conditionals on which is closer so only one of them will be enacted 88#89# note that FlipR only occurs for DIFFERENCE90#91# 92#93table_ = {94 DIFFERENCE : { 95 Enter : {96 Enter : RetLIfCloser | LoopR,97 Exit : LoopLIfCloser | LoopRIfCloser,98 Miss : RetL99 },100 Exit: {101 Enter : RetLIfCloser | RetFlippedRIfCloser,102 Exit : RetFlippedRIfCloser | LoopL,103 Miss : RetL104 },105 Miss: {106 Enter : RetMiss,107 Exit : RetMiss,108 Miss : RetMiss109 }110 }, 111 UNION : {112 Enter : {113 Enter : RetLIfCloser | RetRIfCloser, 114 Exit : RetRIfCloser | LoopL,115 Miss : RetL116 },117 Exit : {118 Enter : RetLIfCloser | LoopR, 119 Exit : LoopLIfCloser | LoopRIfCloser,120 Miss : RetL121 },122 Miss: {123 Enter : RetR,124 Exit : RetR,125 Miss : RetMiss126 }127 },128 129 INTERSECTION : {130 Enter : {131 Enter : LoopLIfCloser | LoopRIfCloser,132 Exit : RetLIfCloser | LoopR ,133 Miss : RetMiss134 },135 Exit : {136 Enter : RetRIfCloser | LoopL,137 Exit : RetLIfCloser | RetRIfCloser,138 Miss : RetMiss 139 },140 Miss : {141 Enter : RetMiss, 142 Exit : RetMiss, 143 Miss : RetMiss144 }145 }146}147def boolean_table(operation, l, r):148 assert operation in [UNION, INTERSECTION, DIFFERENCE], operation149 assert l in [Enter,Exit,Miss], l150 assert r in [Enter,Exit,Miss], r151 return table_[operation][l][r]152if __name__ == '__main__':153 for op in [UNION,INTERSECTION,DIFFERENCE]:154 print desc[op]155 for l in [Enter, Exit, Miss]:156 for r in [Enter, Exit, Miss]:157 acts = boolean_table(op, l, r )158 print " %7s %7s -> %35s " % ( desc_state[l], desc_state[r], desc_acts(acts) )...
test_CloserVariablesFinder.py
Source:test_CloserVariablesFinder.py
1import unittest2from Generator import CloserVariablesFinder3class TestCloserVariablesFinder(unittest.TestCase):4 """5 Tests the CloserVariablesFinder.py script in the Generator.CloserVariablesFinder6 """7 def test_01(self):8 """9 Test the closer lines. Therefore check line 1 and add 1 as area.10 """11 print("+++ Test 1 +++")12 code_lines_without_annotations = ['mid(x, y, z)', 'm = z', 'y < z', 'x < y', 'm = y', 'x < z', 'm = y # m = x',13 'else', 'x > y', 'm = y', 'x > z', 'm = x', 'return m']14 closer_variables = CloserVariablesFinder.get_closer_variables(1, code_lines_without_annotations, 1)15 closer_variables_str = str(closer_variables)16 print(closer_variables_str)17 closer_variables_str_solution = "['m', 'x', 'y', 'z']"18 self.assertEqual(closer_variables_str_solution, closer_variables_str)19 def test_02(self):20 """21 Test the closer lines. Therefore check line 1 and add 2 as area (def).22 """23 print("+++ Test 2 +++")24 code_lines_without_annotations = ['mid(x, y, z)', 'm = z', 'y < z', 'x < y', 'm = y', 'x < z', 'm = y # m = x',25 'else', 'x > y', 'm = y', 'x > z', 'm = x', 'return m']26 closer_variables = CloserVariablesFinder.get_closer_variables(1, code_lines_without_annotations, 2)27 closer_variables_str = str(closer_variables)28 print(closer_variables_str)29 closer_variables_str_solution = "['m', 'x', 'y', 'z']"30 self.assertEqual(closer_variables_str_solution, closer_variables_str)31 def test_03(self):32 """33 Test the closer lines. Therefore check a line where an expression transformation is located.34 """35 print("+++ Test 3 +++")36 code_lines_without_annotations = ['mid(x, y, z)',37 "m = EXPTransformation.call(2, 7, False, [['m', m], ['z', z])",38 'y < z', 'x < y', 'm = y', 'x < z', 'm = y # m = x',39 'else', 'x > y', 'm = y', 'x > z', 'm = x', 'return m']40 closer_variables = CloserVariablesFinder.get_closer_variables(2, code_lines_without_annotations, 0)41 closer_variables_str = str(closer_variables)42 print(closer_variables_str)43 closer_variables_str_solution = "[]"44 self.assertEqual(closer_variables_str_solution, closer_variables_str)45 def test_04(self):46 """47 Test the closer lines. Therefore check line 5 and add 0 as area.48 """49 print("+++ Test 4 +++")50 code_lines_without_annotations = ['mid(x, y, z)', 'm = z', 'y < z', 'x < y', 'm = y', 'x < z', 'm = y # m = x',51 'else', 'x > y', 'm = y', 'x > z', 'm = x', 'return m']52 closer_variables = CloserVariablesFinder.get_closer_variables(5, code_lines_without_annotations, 0)53 closer_variables_str = str(closer_variables)54 print(closer_variables_str)55 closer_variables_str_solution = "['m', 'y']"56 self.assertEqual(closer_variables_str_solution, closer_variables_str)57 def test_05(self):58 """59 Test the closer lines. Therefore check line 13 and add 0 as area (return).60 """61 print("+++ Test 5 +++")62 code_lines_without_annotations = ['mid(x, y, z)', 'm = z', 'y < z', 'x < y', 'm = y', 'x < z', 'm = y # m = x',63 'else', 'x > y', 'm = y', 'x > z', 'm = x', 'return m']64 closer_variables = CloserVariablesFinder.get_closer_variables(13, code_lines_without_annotations, 0)65 closer_variables_str = str(closer_variables)66 print(closer_variables_str)67 closer_variables_str_solution = "['m']"68 self.assertEqual(closer_variables_str_solution, closer_variables_str)69if __name__ == '__main__':...
balance_pairs.py
Source:balance_pairs.py
1# For each opening emphasis-like marker find a matching closing one2#3from .state_inline import StateInline4def processDelimiters(state: StateInline, delimiters, *args):5 openersBottom = {}6 maximum = len(delimiters)7 closerIdx = 08 while closerIdx < maximum:9 closer = delimiters[closerIdx]10 # Length is only used for emphasis-specific "rule of 3",11 # if it's not defined (in strikethrough or 3rd party plugins),12 # we can default it to 0 to disable those checks.13 #14 closer.length = closer.length or 015 if not closer.close:16 closerIdx += 117 continue18 # Previously calculated lower bounds (previous fails)19 # for each marker and each delimiter length modulo 3.20 if closer.marker not in openersBottom:21 openersBottom[closer.marker] = [-1, -1, -1]22 minOpenerIdx = openersBottom[closer.marker][closer.length % 3]23 openerIdx = closerIdx - closer.jump - 124 # avoid crash if `closer.jump` is pointing outside of the array,25 # e.g. for strikethrough26 if openerIdx < -1:27 openerIdx = -128 newMinOpenerIdx = openerIdx29 while openerIdx > minOpenerIdx:30 opener = delimiters[openerIdx]31 if opener.marker != closer.marker:32 openerIdx -= opener.jump + 133 continue34 if opener.open and opener.end < 0:35 isOddMatch = False36 # from spec:37 #38 # If one of the delimiters can both open and close emphasis, then the39 # sum of the lengths of the delimiter runs containing the opening and40 # closing delimiters must not be a multiple of 3 unless both lengths41 # are multiples of 3.42 #43 if opener.close or closer.open:44 if (opener.length + closer.length) % 3 == 0:45 if opener.length % 3 != 0 or closer.length % 3 != 0:46 isOddMatch = True47 if not isOddMatch:48 # If previous delimiter cannot be an opener, we can safely skip49 # the entire sequence in future checks. This is required to make50 # sure algorithm has linear complexity (see *_*_*_*_*_... case).51 #52 if openerIdx > 0 and not delimiters[openerIdx - 1].open:53 lastJump = delimiters[openerIdx - 1].jump + 154 else:55 lastJump = 056 closer.jump = closerIdx - openerIdx + lastJump57 closer.open = False58 opener.end = closerIdx59 opener.jump = lastJump60 opener.close = False61 newMinOpenerIdx = -162 break63 openerIdx -= opener.jump + 164 if newMinOpenerIdx != -1:65 # If match for this delimiter run failed, we want to set lower bound for66 # future lookups. This is required to make sure algorithm has linear67 # complexity.68 #69 # See details here:70 # https:#github.com/commonmark/cmark/issues/178#issuecomment-27041744271 #72 openersBottom[closer.marker][(closer.length or 0) % 3] = newMinOpenerIdx73 closerIdx += 174def link_pairs(state: StateInline) -> None:75 tokens_meta = state.tokens_meta76 maximum = len(state.tokens_meta)77 processDelimiters(state, state.delimiters)78 curr = 079 while curr < maximum:80 curr_meta = tokens_meta[curr]81 if curr_meta and "delimiters" in curr_meta:82 processDelimiters(state, curr_meta["delimiters"])...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!