How to use my_predicate method in Playwright Python

Best Python code snippet using playwright-python

parser.py

Source:parser.py Github

copy

Full Screen

1###################################################################2# Barbora Šmahlíková3# 2020/20214# S1S formula parser5###################################################################6from automaton import Automaton7from intersection import *8from union import *9from atomic_automata import *10from complement import *11from tree import *12import math13import itertools14import re15from copy import deepcopy16def analyse_predicates(file_text):17 """Analyses user-defined predicates."""18 predicates={}19 # user-defined predicates20 lines = file_text.split('\n')21 error=False22 for line in lines:23 if len(line)!=0 and line.split()[0]=="#define": #line[0]=='#':24 my_predicate=""25 i=726 if not line[i].isspace():27 error=True28 break29 30 # skip spaces31 while i<len(line) and line[i].isspace():32 i+=133 if line[i]!='(':34 # wrong format35 error=True36 break37 # predicate in parentheses38 left=039 right=040 while i<len(line):41 if line[i]=='(':42 left+=143 elif line[i]==')':44 right+=145 my_predicate+=line[i]46 i+=147 if left==right and left!=0:48 break49 while i<len(line) and line[i].isspace():50 i+=151 if i==len(line):52 error=True53 54 # predicate definition55 definition=""56 while i<len(line):57 definition+=line[i]58 i+=159 60 new_pred=""61 i=162 while i<len(my_predicate):63 if my_predicate[i]=='(' or my_predicate[i].isspace():64 break65 new_pred+=my_predicate[i]66 i+=167 68 variables=[]69 while i<len(my_predicate):70 if my_predicate[i].isalpha():71 variables.append(my_predicate[i])72 i+=173 a = parse(definition, predicates)74 tmp = 175 for var in variables:76 for i in range(len(a.transitions)):77 a.transitions[i][1] = a.transitions[i][1].replace(var, "#"+str(tmp))78 new_alphabet = set()79 for symbol in a.alphabet:80 new = symbol.replace(var, "#"+str(tmp))81 new_alphabet.add(new)82 a.alphabet = deepcopy(new_alphabet)83 tmp += 184 if "--rabit" in sys.argv:85 a = rabit_reduction(a)86 87 predicates[new_pred]=[len(variables), a]88 89 else:90 break91 if error:92 raise SyntaxError("Wrong format of user-defined predicates!")93 return predicates94def parse(file_text, predicates):95 """Creates a list of elements from S1S formula."""96 # skip lines with user-defined predicates97 lines = file_text.split('\n')98 new_text=""99 for line in lines:100 if not(len(line)!=0 and line[0]=='#'):101 new_text+=line102 formula=[]103 element=""104 left=0 # number of parentheses105 right=0106 for c in new_text:107 # parentheses108 if c=='(' or c==')':109 if element!="":110 formula.append(element)111 element=""112 formula.append(c)113 if c=='(':114 left+=1115 if c==')':116 right+=1117 118 # skip spaces119 elif c.isspace() and element!="":120 formula.append(element)121 element=""122 123 # load whole element124 elif not c.isspace():125 element+=c126 if left!=right:127 raise SyntaxError("Invalid form of input formula (parentheses not matching).")128 129 #create_tree(formula, predicates)130 a = create_automaton(formula, predicates) 131 edit_transitions(a)132 return a 133 134 135def create_automaton(formula, predicates):136 """Creates Buchi automaton from S1S formula."""137 138 if "--spot" in sys.argv:139 spot = True140 else:141 spot = False142 if "--rabit" in sys.argv:143 rabit = True144 else:145 rabit = False146 147 stack=[]148 atom=[]149 first=True 150 for element in formula:151 if element!=")":152 stack.append(element)153 else:154 atom.append(element)155 # pop everything to '(' and add to atom156 while(stack[-1]!="("):157 atom.append(stack.pop())158 atom.append(stack.pop())159 atom.reverse()160 error=False161 # user-defined predicates162 if atom[1] in predicates.keys():163 a = deepcopy(predicates[atom[1]][1])164 for i in range(predicates[atom[1]][0]):165 for j in range(len(a.transitions)):166 a.transitions[j][1] = a.transitions[j][1].replace("#"+str(i+1), atom[i+2])167 new_alphabet = set()168 for symbol in a.alphabet:169 new = symbol.replace("#"+str(i+1), atom[i+2])170 new_alphabet.add(new)171 a.alphabet = deepcopy(new_alphabet)172 # operations with automata173 elif atom[1]=="exists":174 if not (isinstance(atom[3], Automaton)):175 error=True176 else:177 a=exists(atom[2],atom[3])178 elif atom[1]=="forall":179 if not (isinstance(atom[3], Automaton)):180 error=True181 else:182 a = atom[3]183 if spot:184 a = spot_complement(a)185 else:186 a=comp2(a)187 a = exists(atom[2], a)188 if rabit:189 a = rabit_reduction(a)190 if spot:191 a = spot_complement(a)192 else:193 a=comp2(a)194 elif atom[1]=="and":195 if not (isinstance(atom[2], Automaton) and isinstance(atom[3], Automaton)):196 error=True197 else:198 a=intersection(atom[2],atom[3])199 elif atom[1]=="or":200 if not (isinstance(atom[2], Automaton) and isinstance(atom[3], Automaton)):201 error=True202 else:203 a=union(atom[2],atom[3])204 elif atom[1]=="neg":205 if not (isinstance(atom[2], Automaton)):206 error=True207 else:208 a = atom[2]209 if spot:210 a = spot_complement(a)211 else:212 a=comp2(a)213 elif atom[1]=="implies":214 if not (isinstance(atom[2], Automaton) and isinstance(atom[3], Automaton)):215 error=True216 else:217 a = atom[2]218 if spot:219 a = spot_complement(a)220 else:221 a = comp2(a)222 if rabit:223 a = rabit_reduction(a)224 a=union(a, atom[3])225 # atomic automata226 elif atom[1]=="zeroin":227 a=zeroin(atom[2])228 elif atom[1]=="sing":229 a=sing(atom[2])230 elif atom[1]=="sub":231 a=sub(atom[2],atom[3])232 elif atom[1]=="succ":233 a=succ(atom[2],atom[3])234 elif atom[1]=="<":235 a=less(atom[2],atom[3])236 237 else:238 if (not first) or len(atom)!=4:239 raise SyntaxError('Invalid form of input formula near "{}".'.format(' '.join(map(str,atom))))240 if isinstance(atom[2], Automaton) or isinstance(atom[3], Automaton):241 raise SyntaxError('Invalid form of input formula near "{}".'.format(atom[1]))242 # arguments of succ or sub can be in parentheses243 atom.remove('(')244 atom.remove(')')245 atom.reverse()246 for i in range(len(atom)):247 stack.append(atom[len(atom)-i-1])248 atom=[]249 first=False250 continue251 if error:252 raise SyntaxError('Invalid form of input formula near "{}".'.format(atom[1]))253 stack.append(a)254 first=True255 atom=[]256 # reduction257 if rabit:258 a = rabit_reduction(a)259 return a260def rabit_reduction(a):261 "Using Rabit for reduction"262 alphabet = a.alphabet263 write_all_transitions(a)264 write_to_file(a, 'a.ba') # write to a.ba265 stream = os.popen('java -jar ../RABIT250/Reduce.jar a.ba 10')266 output = stream.read()267 #print(output)268 with open('reduced_10_a.ba') as f:269 a = load_data(f) # reduced automaton270 a.alphabet = alphabet271 272 return a273def myfunc():274 if not hasattr(myfunc, "counter"):275 myfunc.counter = 0276 myfunc.counter += 1277 return myfunc.counter278def spot_complement(a):279 "Using Spot for complement"280 281 a = rabit_reduction(a)282 alphabet = a.alphabet283 complete_automaton(a)284 285 # write to .ba file286 write_all_transitions(a)287 write_to_file(a, 'a.ba')288 stream = os.popen('cat a.ba')289 output = stream.read()290 291 # convert to .hoa292 with open('a.hoa', 'w+') as f:293 f.write('HOA: v1\n')294 f.write('States: {}\n'.format(len(a.states)))295 f.write('Start:')296 for state in a.start:297 f.write(" {}".format(state))298 f.write('\n')299 f.write('acc-name: Buchi\n')300 f.write('Acceptance: 1 Inf(0)\n')301 f.write('properties: explicit-labels state-acc trans-labels\n')302 f.write('AP: {}'.format(int(math.log(len(a.alphabet),2))))303 for c in a.alphabet:304 i=0305 symbol_count = 0306 symbols=list()307 while i<len(c):308 f.write(' "{}"'.format(c[i]))309 symbol_count += 1310 symbols.append(c[i])311 i+=4312 break313 f.write('\n')314 f.write('--BODY--\n')315 for state in a.states:316 f.write('State: {}'.format(state))317 if state in a.accept:318 f.write(' {0}')319 f.write('\n')320 for t in a.transitions:321 if t[0]==state:322 string=""323 i=0324 while i<symbol_count:325 if "{}:0".format(symbols[i]) in t[1]:326 word = "!{}".format(i)327 else:328 word = "{}".format(i)329 if i==0:330 string += word331 else:332 string += " & {}".format(word)333 i+=1334 f.write('[{}] {}\n'.format(string, t[2]))335 f.write('--END--\n')336 # export .hoa files337 #endFile = 'aut/'+sys.argv[-1]+'-'+str(myfunc())+'.hoa'338 #stream = subprocess.Popen('cp a.hoa ' + endFile, shell=True)339 #stream.wait()340 # complement using spot341 stream = subprocess.Popen('autfilt --complement --ba a.hoa >a_neg.hoa', shell=True)342 stream.wait()343 b = Automaton(set(), a.alphabet, list(), set(), set())344 with open('a_neg.hoa') as src:345 for line in src:346 if "States" in line:347 split = line.split()348 for state in split:349 if state.isdigit():350 for i in range(int(state)):351 b.states.add(str(i))352 elif "Start" in line:353 split = line.split()354 for state in split:355 if state.isdigit():356 b.start.add(state)357 elif "State:" in line:358 split = line.split()359 for s in split:360 if s.isdigit():361 current = s362 elif "{0}" in s:363 b.accept.add(current)364 elif "[" in line:365 split = line.split()366 for state in split:367 if state.isdigit():368 dst = state369 370 newline = re.search('\[(.+?)\]',line).group(1)371 newline = newline.replace('[','')372 newline = newline.replace(']','')373 newline = newline.replace('|','')374 split = newline.split()375 for option in split:376 string=""377 for i in range(symbol_count):378 if "!{}".format(i) in option:379 if i==0:380 string += "{}:0".format(symbols[i])381 else:382 string += "|{}:0".format(symbols[i])383 elif str(i) in option:384 if i==0:385 string += "{}:1".format(symbols[i])386 else:387 string += "|{}:1".format(symbols[i])388 else:389 if i==0:390 string += "{}:?".format(symbols[i])391 else:392 string += "|{}:?".format(symbols[i])393 if [current, string, dst] not in b.transitions:394 b.transitions.append([current, string, dst])395 396 write_all_transitions(b)397 write_to_file(b, 'a.ba')398 with open('a.ba') as f:399 a = load_data(f)400 a.alphabet = alphabet401 a = rabit_reduction(a)...

Full Screen

Full Screen

test_matchers.py

Source:test_matchers.py Github

copy

Full Screen

...63 assert c == "act"64 assert "act" == c65 assert c is not a66def test_pretty_print_any_such_that():67 def my_predicate(x):68 return True69 a = Any()70 aa = a.such_that(my_predicate).such_that(lambda: True)71 assert repr(aa) == repr(a) + ".such_that(my_predicate).such_that(<lambda>)"72 assert str(aa) == str(a) + ".such_that(my_predicate).such_that(<lambda>)"73 class Predicate(object):74 @classmethod75 def __call__(cls, x):76 return True77 b = Any(str)78 bb = b.such_that(Predicate)79 assert repr(bb) == repr(b) + ".such_that(Predicate)"80 assert str(bb) == str(b) + ".such_that(Predicate)"81def test_contains_equality():...

Full Screen

Full Screen

validation_classes.py

Source:validation_classes.py Github

copy

Full Screen

1import hashlib2class Md5sumValidator:3 def __init__(self, test_name, input_file, expected_md5sum, comment=None):4 self.test_name = test_name5 self.input_file = input_file6 self.expected_md5sum = expected_md5sum7 self.test_type = "md5sum"8 self.comment = comment9 def is_valid(self):10 return get_md5sum(self.input_file, self.comment) == self.expected_md5sum11 def __eq__(self, other):12 return (13 self.test_name == other.test_name14 and self.input_file == other.input_file15 and self.expected_md5sum == other.expected_md5sum16 and self.comment == other.comment17 )18def get_md5sum(filepath, comment=None):19 """20 Compute the md5 sum for a file.21 If `comment` is specified, ignore all lines of the file that start with22 this comment-character.23 :param filepath: a path to a file, a string.24 :param comment: the comment character for the file; all lines that start25 with this character will be disregarded.26 :return: the md5sum for the file, as a string27 """28 my_predicate = lambda x: True29 if comment is not None:30 my_predicate = lambda x: not x.startswith(comment)31 try:32 # We assume the file isn't binary33 my_hash = hashlib.md5()34 with open(filepath, "r") as f:35 for line in filter(my_predicate, f):36 my_hash.update(line.encode("utf-8"))37 except UnicodeDecodeError:38 # If there are any encoding errors, we try treating the file as if it's39 # binary40 my_hash = hashlib.md5()41 with open(filepath, "rb") as f:42 for chunk in iter(lambda: f.read(4096), b""):43 my_hash.update(chunk)44 except:45 raise...

Full Screen

Full Screen

decorator1.py

Source:decorator1.py Github

copy

Full Screen

1#!/usr/bin/python2#https://www.jeffknupp.com/blog/2013/11/29/improve-your-python-decorators-explained/3def is_even(value):4 """Return True if *value* is even."""5 return (value % 2) == 06def count_occurrences(target_list, predicate):7 """Return the number of times applying the callable *predicate* to a8 list element returns True."""9 return sum([1 for e in target_list if predicate(e)])10my_predicate = is_even11my_list = [1, 2, 4, 6, 7, 8, 9, 11, 12]12result = count_occurrences(my_list, my_predicate)...

Full Screen

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Python automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful