Best Python code snippet using playwright-python
wheel_builder.py
Source: wheel_builder.py
1"""Orchestrator for building wheels from InstallRequirements.2"""3import logging4import os.path5import re6import shutil7from pip._internal.models.link import Link8from pip._internal.operations.build.wheel import build_wheel_pep5179from pip._internal.operations.build.wheel_legacy import build_wheel_legacy10from pip._internal.utils.logging import indent_log11from pip._internal.utils.misc import ensure_dir, hash_file, is_wheel_installed12from pip._internal.utils.setuptools_build import make_setuptools_clean_args13from pip._internal.utils.subprocess import call_subprocess14from pip._internal.utils.temp_dir import TempDirectory15from pip._internal.utils.typing import MYPY_CHECK_RUNNING16from pip._internal.utils.urls import path_to_url17from pip._internal.vcs import vcs18if MYPY_CHECK_RUNNING:19 from typing import (20 Any, Callable, Iterable, List, Optional, Tuple,21 )22 from pip._internal.cache import WheelCache23 from pip._internal.req.req_install import InstallRequirement24 BinaryAllowedPredicate = Callable[[InstallRequirement], bool]25 BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]]26logger = logging.getLogger(__name__)27_egg_info_re = re.compile(r'([a-z0-9_.]+)-([a-z0-9_.!+-]+)', re.IGNORECASE)28def _contains_egg_info(s):29 # type: (str) -> bool30 """Determine whether the string looks like an egg_info.31 :param s: The string to parse. E.g. foo-2.132 """33 return bool(_egg_info_re.search(s))34def _should_build(35 req, # type: InstallRequirement36 need_wheel, # type: bool37 check_binary_allowed, # type: BinaryAllowedPredicate38):39 # type: (...) -> bool40 """Return whether an InstallRequirement should be built into a wheel."""41 if req.constraint:42 # never build requirements that are merely constraints43 return False44 if req.is_wheel:45 if need_wheel:46 logger.info(47 'Skipping %s, due to already being wheel.', req.name,48 )49 return False50 if need_wheel:51 # i.e. pip wheel, not pip install52 return True53 # From this point, this concerns the pip install command only54 # (need_wheel=False).55 if req.editable or not req.source_dir:56 return False57 if not check_binary_allowed(req):58 logger.info(59 "Skipping wheel build for %s, due to binaries "60 "being disabled for it.", req.name,61 )62 return False63 if not req.use_pep517 and not is_wheel_installed():64 # we don't build legacy requirements if wheel is not installed65 logger.info(66 "Using legacy 'setup.py install' for %s, "67 "since package 'wheel' is not installed.", req.name,68 )69 return False70 return True71def should_build_for_wheel_command(72 req, # type: InstallRequirement73):74 # type: (...) -> bool75 return _should_build(76 req, need_wheel=True, check_binary_allowed=_always_true77 )78def should_build_for_install_command(79 req, # type: InstallRequirement80 check_binary_allowed, # type: BinaryAllowedPredicate81):82 # type: (...) -> bool83 return _should_build(84 req, need_wheel=False, check_binary_allowed=check_binary_allowed85 )86def _should_cache(87 req, # type: InstallRequirement88):89 # type: (...) -> Optional[bool]90 """91 Return whether a built InstallRequirement can be stored in the persistent92 wheel cache, assuming the wheel cache is available, and _should_build()93 has determined a wheel needs to be built.94 """95 if req.editable or not req.source_dir:96 # never cache editable requirements97 return False98 if req.link and req.link.is_vcs:99 # VCS checkout. Do not cache100 # unless it points to an immutable commit hash.101 assert not req.editable102 assert req.source_dir103 vcs_backend = vcs.get_backend_for_scheme(req.link.scheme)104 assert vcs_backend105 if vcs_backend.is_immutable_rev_checkout(req.link.url, req.source_dir):106 return True107 return False108 assert req.link109 base, ext = req.link.splitext()110 if _contains_egg_info(base):111 return True112 # Otherwise, do not cache.113 return False114def _get_cache_dir(115 req, # type: InstallRequirement116 wheel_cache, # type: WheelCache117):118 # type: (...) -> str119 """Return the persistent or temporary cache directory where the built120 wheel need to be stored.121 """122 cache_available = bool(wheel_cache.cache_dir)123 assert req.link124 if cache_available and _should_cache(req):125 cache_dir = wheel_cache.get_path_for_link(req.link)126 else:127 cache_dir = wheel_cache.get_ephem_path_for_link(req.link)128 return cache_dir129def _always_true(_):130 # type: (Any) -> bool131 return True132def _build_one(133 req, # type: InstallRequirement134 output_dir, # type: str135 build_options, # type: List[str]136 global_options, # type: List[str]137):138 # type: (...) -> Optional[str]139 """Build one wheel.140 :return: The filename of the built wheel, or None if the build failed.141 """142 try:143 ensure_dir(output_dir)144 except OSError as e:145 logger.warning(146 "Building wheel for %s failed: %s",147 req.name, e,148 )149 return None150 # Install build deps into temporary directory (PEP 518)151 with req.build_env:152 return _build_one_inside_env(153 req, output_dir, build_options, global_options154 )155def _build_one_inside_env(156 req, # type: InstallRequirement157 output_dir, # type: str158 build_options, # type: List[str]159 global_options, # type: List[str]160):161 # type: (...) -> Optional[str]162 with TempDirectory(kind="wheel") as temp_dir:163 assert req.name164 if req.use_pep517:165 assert req.metadata_directory166 wheel_path = build_wheel_pep517(167 name=req.name,168 backend=req.pep517_backend,169 metadata_directory=req.metadata_directory,170 build_options=build_options,171 tempd=temp_dir.path,172 )173 else:174 wheel_path = build_wheel_legacy(175 name=req.name,176 setup_py_path=req.setup_py_path,177 source_dir=req.unpacked_source_directory,178 global_options=global_options,179 build_options=build_options,180 tempd=temp_dir.path,181 )182 if wheel_path is not None:183 wheel_name = os.path.basename(wheel_path)184 dest_path = os.path.join(output_dir, wheel_name)185 try:186 wheel_hash, length = hash_file(wheel_path)187 shutil.move(wheel_path, dest_path)188 logger.info('Created wheel for %s: '189 'filename=%s size=%d sha256=%s',190 req.name, wheel_name, length,191 wheel_hash.hexdigest())192 logger.info('Stored in directory: %s', output_dir)193 return dest_path194 except Exception as e:195 logger.warning(196 "Building wheel for %s failed: %s",197 req.name, e,198 )199 # Ignore return, we can't do anything else useful.200 if not req.use_pep517:201 _clean_one_legacy(req, global_options)202 return None203def _clean_one_legacy(req, global_options):204 # type: (InstallRequirement, List[str]) -> bool205 clean_args = make_setuptools_clean_args(206 req.setup_py_path,207 global_options=global_options,208 )209 logger.info('Running setup.py clean for %s', req.name)210 try:211 call_subprocess(clean_args, cwd=req.source_dir)212 return True213 except Exception:214 logger.error('Failed cleaning build dir for %s', req.name)215 return False216def build(217 requirements, # type: Iterable[InstallRequirement]218 wheel_cache, # type: WheelCache219 build_options, # type: List[str]220 global_options, # type: List[str]221):222 # type: (...) -> BuildResult223 """Build wheels.224 :return: The list of InstallRequirement that succeeded to build and225 the list of InstallRequirement that failed to build.226 """227 if not requirements:228 return [], []229 # Build the wheels.230 logger.info(231 'Building wheels for collected packages: %s',232 ', '.join(req.name for req in requirements), # type: ignore233 )234 with indent_log():235 build_successes, build_failures = [], []236 for req in requirements:237 cache_dir = _get_cache_dir(req, wheel_cache)238 wheel_file = _build_one(239 req, cache_dir, build_options, global_options240 )241 if wheel_file:242 # Update the link for this.243 req.link = Link(path_to_url(wheel_file))244 req.local_file_path = req.link.file_path245 assert req.link.is_wheel246 build_successes.append(req)247 else:248 build_failures.append(req)249 # notify success/failure250 if build_successes:251 logger.info(252 'Successfully built %s',253 ' '.join([req.name for req in build_successes]), # type: ignore254 )255 if build_failures:256 logger.info(257 'Failed to build %s',258 ' '.join([req.name for req in build_failures]), # type: ignore259 )260 # Return a list of requirements that failed to build...
Car.js
Source: Car.js
1/**2 * @author alteredq / http://alteredqualia.com/3 */4THREE.Car = function () {5 var scope = this;6 // car geometry manual parameters7 this.modelScale = 1;8 this.backWheelOffset = 2;9 this.autoWheelGeometry = true;10 // car geometry parameters automatically set from wheel mesh11 // - assumes wheel mesh is front left wheel in proper global12 // position with respect to body mesh13 // - other wheels are mirrored against car root14 // - if necessary back wheels can be offset manually15 this.wheelOffset = new THREE.Vector3();16 this.wheelDiameter = 1;17 // car "feel" parameters18 this.MAX_SPEED = 2200;19 this.MAX_REVERSE_SPEED = -1500;20 this.MAX_WHEEL_ROTATION = 0.6;21 this.FRONT_ACCELERATION = 1250;22 this.BACK_ACCELERATION = 1500;23 this.WHEEL_ANGULAR_ACCELERATION = 1.5;24 this.FRONT_DECCELERATION = 750;25 this.WHEEL_ANGULAR_DECCELERATION = 1.0;26 this.STEERING_RADIUS_RATIO = 0.0023;27 this.MAX_TILT_SIDES = 0.05;28 this.MAX_TILT_FRONTBACK = 0.015;29 // internal control variables30 this.speed = 0;31 this.acceleration = 0;32 this.wheelOrientation = 0;33 this.carOrientation = 0;34 // car rigging35 this.root = new THREE.Object3D();36 this.frontLeftWheelRoot = new THREE.Object3D();37 this.frontRightWheelRoot = new THREE.Object3D();38 this.bodyMesh = null;39 this.frontLeftWheelMesh = null;40 this.frontRightWheelMesh = null;41 this.backLeftWheelMesh = null;42 this.backRightWheelMesh = null;43 this.bodyGeometry = null;44 this.wheelGeometry = null;45 this.bodyMaterials = null;46 this.wheelMaterials = null;47 // internal helper variables48 this.loaded = false;49 this.meshes = [];50 // API51 this.enableShadows = function ( enable ) {52 for ( var i = 0; i < this.meshes.length; i ++ ) {53 this.meshes[ i ].castShadow = enable;54 this.meshes[ i ].receiveShadow = enable;55 }56 };57 this.setVisible = function ( enable ) {58 for ( var i = 0; i < this.meshes.length; i ++ ) {59 this.meshes[ i ].visible = enable;60 this.meshes[ i ].visible = enable;61 }62 };63 this.loadPartsJSON = function ( bodyURL, wheelURL ) {64 var loader = new THREE.JSONLoader();65 loader.load( bodyURL, function( geometry, materials ) { createBody( geometry, materials ) } );66 loader.load( wheelURL, function( geometry, materials ) { createWheels( geometry, materials ) } );67 };68 this.loadPartsBinary = function ( bodyURL, wheelURL ) {69 var loader = new THREE.BinaryLoader();70 loader.load( bodyURL, function( geometry, materials ) { createBody( geometry, materials ) } );71 loader.load( wheelURL, function( geometry, materials ) { createWheels( geometry, materials ) } );72 };73 this.updateCarModel = function ( delta, controls ) {74 // speed and wheels based on controls75 if ( controls.moveForward ) {76 this.speed = THREE.Math.clamp( this.speed + delta * this.FRONT_ACCELERATION, this.MAX_REVERSE_SPEED, this.MAX_SPEED );77 this.acceleration = THREE.Math.clamp( this.acceleration + delta, -1, 1 );78 }79 if ( controls.moveBackward ) {80 this.speed = THREE.Math.clamp( this.speed - delta * this.BACK_ACCELERATION, this.MAX_REVERSE_SPEED, this.MAX_SPEED );81 this.acceleration = THREE.Math.clamp( this.acceleration - delta, -1, 1 );82 }83 if ( controls.moveLeft ) {84 this.wheelOrientation = THREE.Math.clamp( this.wheelOrientation + delta * this.WHEEL_ANGULAR_ACCELERATION, - this.MAX_WHEEL_ROTATION, this.MAX_WHEEL_ROTATION );85 }86 if ( controls.moveRight ) {87 this.wheelOrientation = THREE.Math.clamp( this.wheelOrientation - delta * this.WHEEL_ANGULAR_ACCELERATION, - this.MAX_WHEEL_ROTATION, this.MAX_WHEEL_ROTATION );88 }89 // speed decay90 if ( ! ( controls.moveForward || controls.moveBackward ) ) {91 if ( this.speed > 0 ) {92 var k = exponentialEaseOut( this.speed / this.MAX_SPEED );93 this.speed = THREE.Math.clamp( this.speed - k * delta * this.FRONT_DECCELERATION, 0, this.MAX_SPEED );94 this.acceleration = THREE.Math.clamp( this.acceleration - k * delta, 0, 1 );95 } else {96 var k = exponentialEaseOut( this.speed / this.MAX_REVERSE_SPEED );97 this.speed = THREE.Math.clamp( this.speed + k * delta * this.BACK_ACCELERATION, this.MAX_REVERSE_SPEED, 0 );98 this.acceleration = THREE.Math.clamp( this.acceleration + k * delta, -1, 0 );99 }100 }101 // steering decay102 if ( ! ( controls.moveLeft || controls.moveRight ) ) {103 if ( this.wheelOrientation > 0 ) {104 this.wheelOrientation = THREE.Math.clamp( this.wheelOrientation - delta * this.WHEEL_ANGULAR_DECCELERATION, 0, this.MAX_WHEEL_ROTATION );105 } else {106 this.wheelOrientation = THREE.Math.clamp( this.wheelOrientation + delta * this.WHEEL_ANGULAR_DECCELERATION, - this.MAX_WHEEL_ROTATION, 0 );107 }108 }109 // car update110 var forwardDelta = this.speed * delta;111 this.carOrientation += ( forwardDelta * this.STEERING_RADIUS_RATIO )* this.wheelOrientation;112 // displacement113 this.root.position.x += Math.sin( this.carOrientation ) * forwardDelta;114 this.root.position.z += Math.cos( this.carOrientation ) * forwardDelta;115 // steering116 this.root.rotation.y = this.carOrientation;117 // tilt118 if ( this.loaded ) {119 this.bodyMesh.rotation.z = this.MAX_TILT_SIDES * this.wheelOrientation * ( this.speed / this.MAX_SPEED );120 this.bodyMesh.rotation.x = - this.MAX_TILT_FRONTBACK * this.acceleration;121 }122 // wheels rolling123 var angularSpeedRatio = 1 / ( this.modelScale * ( this.wheelDiameter / 2 ) );124 var wheelDelta = forwardDelta * angularSpeedRatio;125 if ( this.loaded ) {126 this.frontLeftWheelMesh.rotation.x += wheelDelta;127 this.frontRightWheelMesh.rotation.x += wheelDelta;128 this.backLeftWheelMesh.rotation.x += wheelDelta;129 this.backRightWheelMesh.rotation.x += wheelDelta;130 }131 // front wheels steering132 this.frontLeftWheelRoot.rotation.y = this.wheelOrientation;133 this.frontRightWheelRoot.rotation.y = this.wheelOrientation;134 };135 // internal helper methods136 function createBody ( geometry, materials ) {137 scope.bodyGeometry = geometry;138 scope.bodyMaterials = materials;139 createCar();140 };141 function createWheels ( geometry, materials ) {142 scope.wheelGeometry = geometry;143 scope.wheelMaterials = materials;144 createCar();145 };146 function createCar () {147 if ( scope.bodyGeometry && scope.wheelGeometry ) {148 // compute wheel geometry parameters149 if ( scope.autoWheelGeometry ) {150 scope.wheelGeometry.computeBoundingBox();151 var bb = scope.wheelGeometry.boundingBox;152 scope.wheelOffset.addVectors( bb.min, bb.max );153 scope.wheelOffset.multiplyScalar( 0.5 );154 scope.wheelDiameter = bb.max.y - bb.min.y;155 scope.wheelGeometry.center();156 }157 // rig the car158 var s = scope.modelScale,159 delta = new THREE.Vector3();160 var bodyFaceMaterial = new THREE.MeshFaceMaterial( scope.bodyMaterials );161 var wheelFaceMaterial = new THREE.MeshFaceMaterial( scope.wheelMaterials );162 // body163 scope.bodyMesh = new THREE.Mesh( scope.bodyGeometry, bodyFaceMaterial );164 scope.bodyMesh.scale.set( s, s, s );165 scope.root.add( scope.bodyMesh );166 // front left wheel167 delta.multiplyVectors( scope.wheelOffset, new THREE.Vector3( s, s, s ) );168 scope.frontLeftWheelRoot.position.add( delta );169 scope.frontLeftWheelMesh = new THREE.Mesh( scope.wheelGeometry, wheelFaceMaterial );170 scope.frontLeftWheelMesh.scale.set( s, s, s );171 scope.frontLeftWheelRoot.add( scope.frontLeftWheelMesh );172 scope.root.add( scope.frontLeftWheelRoot );173 // front right wheel174 delta.multiplyVectors( scope.wheelOffset, new THREE.Vector3( -s, s, s ) );175 scope.frontRightWheelRoot.position.add( delta );176 scope.frontRightWheelMesh = new THREE.Mesh( scope.wheelGeometry, wheelFaceMaterial );177 scope.frontRightWheelMesh.scale.set( s, s, s );178 scope.frontRightWheelMesh.rotation.z = Math.PI;179 scope.frontRightWheelRoot.add( scope.frontRightWheelMesh );180 scope.root.add( scope.frontRightWheelRoot );181 // back left wheel182 delta.multiplyVectors( scope.wheelOffset, new THREE.Vector3( s, s, -s ) );183 delta.z -= scope.backWheelOffset;184 scope.backLeftWheelMesh = new THREE.Mesh( scope.wheelGeometry, wheelFaceMaterial );185 scope.backLeftWheelMesh.position.add( delta );186 scope.backLeftWheelMesh.scale.set( s, s, s );187 scope.root.add( scope.backLeftWheelMesh );188 // back right wheel189 delta.multiplyVectors( scope.wheelOffset, new THREE.Vector3( -s, s, -s ) );190 delta.z -= scope.backWheelOffset;191 scope.backRightWheelMesh = new THREE.Mesh( scope.wheelGeometry, wheelFaceMaterial );192 scope.backRightWheelMesh.position.add( delta );193 scope.backRightWheelMesh.scale.set( s, s, s );194 scope.backRightWheelMesh.rotation.z = Math.PI;195 scope.root.add( scope.backRightWheelMesh );196 // cache meshes197 scope.meshes = [ scope.bodyMesh, scope.frontLeftWheelMesh, scope.frontRightWheelMesh, scope.backLeftWheelMesh, scope.backRightWheelMesh ];198 // callback199 scope.loaded = true;200 if ( scope.callback ) {201 scope.callback( scope );202 }203 }204 };205 function quadraticEaseOut( k ) { return - k * ( k - 2 ); }206 function cubicEaseOut( k ) { return --k * k * k + 1; }207 function circularEaseOut( k ) { return Math.sqrt( 1 - --k * k ); }208 function sinusoidalEaseOut( k ) { return Math.sin( k * Math.PI / 2 ); }209 function exponentialEaseOut( k ) { return k === 1 ? 1 : - Math.pow( 2, - 10 * k ) + 1; }...
wheel.py
Source: wheel.py
...38 "Error decoding metadata for {}: {}".format(39 self._wheel_name, e40 )41 )42def pkg_resources_distribution_for_wheel(wheel_zip, name, location):43 # type: (ZipFile, str, str) -> Distribution44 """Get a pkg_resources distribution given a wheel.45 :raises UnsupportedWheel: on any errors46 """47 info_dir, _ = parse_wheel(wheel_zip, name)48 metadata_files = [49 p for p in wheel_zip.namelist() if p.startswith("{}/".format(info_dir))50 ]51 metadata_text = {} # type: Dict[str, bytes]52 for path in metadata_files:53 # If a flag is set, namelist entries may be unicode in Python 2.54 # We coerce them to native str type to match the types used in the rest55 # of the code. This cannot fail because unicode can always be encoded56 # with UTF-8.57 full_path = ensure_str(path)58 _, metadata_name = full_path.split("/", 1)59 try:60 metadata_text[metadata_name] = read_wheel_metadata_file(61 wheel_zip, full_path62 )63 except UnsupportedWheel as e:64 raise UnsupportedWheel(65 "{} has an invalid wheel, {}".format(name, str(e))66 )67 metadata = WheelMetadata(metadata_text, location)68 return DistInfoDistribution(69 location=location, metadata=metadata, project_name=name70 )71def parse_wheel(wheel_zip, name):72 # type: (ZipFile, str) -> Tuple[str, Message]73 """Extract information from the provided wheel, ensuring it meets basic74 standards.75 Returns the name of the .dist-info directory and the parsed WHEEL metadata.76 """77 try:78 info_dir = wheel_dist_info_dir(wheel_zip, name)79 metadata = wheel_metadata(wheel_zip, info_dir)80 version = wheel_version(metadata)81 except UnsupportedWheel as e:82 raise UnsupportedWheel(83 "{} has an invalid wheel, {}".format(name, str(e))84 )85 check_compatibility(version, name)...
AWSAutonomousVehicleIOT.py
Source: AWSAutonomousVehicleIOT.py
1#!/usr/bin/python2# Replace aws_rest_endpoint with your AWS IoT endpoint dns name3# Replace the ca_path, cert_path and key_path with the credentials to you created with the AWS IoT service4# Replace your vehicleid and wheel_travel with your vehicle information5# DynamoDB TTL is set for 30 days for expiration6# battery_capacity is an arbitrary number7# Replace vehicle_topic with the AWS IoT that you want to send the telemetry to8import time9from time import sleep10import json11import random12import uuid13import datetime14import paho.mqtt.client as paho15import ssl16import rightfrontwheel17import leftfrontwheel18import rightrearwheel19import leftrearwheel20# Fill out this area with AWS account specific details21aws_rest_endpoint = "youriotendpoint.iot.us-east-1.amazonaws.com"22awsport = 888323# Location of Certificates24ca_path = "/home/pi/d2/creds/VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem"25cert_path = "/home/pi/d2/creds/avaws01.donkeycar.cert.pem"26key_path = "/home/pi/d2/creds/avaws01.donkeycar.private.key"27connflag = False28def on_connect(client, userdata, flags, rc):29 global connflag30 connflag = True31 print("Connection returned result: " + str(rc))32def on_message(client, userdata, msg):33 print(msg.topic+" "+str(msg.payload))34 print(Iot_Topic+str(msg.payload))35def getTime():36 currenttime = time.localtime()37 return (time.strftime("%Y%m%d%H%M%S", currenttime))38def drivetelemetry():39 vehicleid = "avaws01"40 actualtime = getTime()41 unixtime = str(datetime.datetime.now())42 event = uuid.uuid4()43 eventid = event.hex44 dynamodb_ttl = int(time.time()) + 259200045 wheel_travel = 9.546 feet = 1247 wheel_rotations_per_mile = 6336048 speed_reset = random.randint(1, 9)49 battery_capacity = 532050 right_front_wheel_rpm = int(rightfrontwheel.get_wheelrpm())51 right_front_wheel_odometer = round((rightfrontwheel.get_wheeldistance())/feet, 2)52 right_front_wheel_distance = right_front_wheel_rpm * wheel_travel53 right_front_wheel_mpm = right_front_wheel_distance / wheel_rotations_per_mile54 right_front_wheel_mph = right_front_wheel_mpm * 6055 right_front_wheel_speed = round(right_front_wheel_mph)56 right_front_wheel_data = {"right_front_speed": right_front_wheel_speed, "right_front_rpm": right_front_wheel_rpm, "right_front_wheel_odometer": right_front_wheel_odometer}57 left_front_wheel_rpm = int(leftfrontwheel.get_wheelrpm())58 left_front_wheel_odometer = round((leftfrontwheel.get_wheeldistance())/feet, 2)59 left_front_wheel_distance = left_front_wheel_rpm * wheel_travel60 left_front_wheel_mpm = left_front_wheel_distance / wheel_rotations_per_mile61 left_front_wheel_mph = left_front_wheel_mpm * 6062 left_front_wheel_speed = round(left_front_wheel_mph)63 left_front_wheel_data = {"left_front_speed": left_front_wheel_speed, "left_front_rpm": left_front_wheel_rpm, "left_front_wheel_odometer": left_front_wheel_odometer}64 right_rear_wheel_rpm = int(rightrearwheel.get_wheelrpm())65 right_rear_wheel_odometer = round((rightrearwheel.get_wheeldistance())/feet, 2)66 right_rear_wheel_distance = right_rear_wheel_rpm * wheel_travel67 right_rear_wheel_mpm = right_rear_wheel_distance / wheel_rotations_per_mile68 right_rear_wheel_mph = right_rear_wheel_mpm * 6069 right_rear_wheel_speed = round(right_rear_wheel_mph)70 right_rear_wheel_data = {"right_rear_speed": right_rear_wheel_speed, "right_rear_rpm": right_rear_wheel_rpm, "right_rear_wheel_odometer": right_rear_wheel_odometer}71 left_rear_wheel_rpm = int(leftrearwheel.get_wheelrpm())72 left_rear_wheel_odometer = round((leftrearwheel.get_wheeldistance())/feet, 2)73 left_rear_wheel_distance = left_rear_wheel_rpm * wheel_travel74 left_rear_wheel_mpm = left_rear_wheel_distance / wheel_rotations_per_mile75 left_rear_wheel_mph = left_rear_wheel_mpm * 6076 left_rear_wheel_speed = round(left_rear_wheel_mph)77 left_rear_wheel_data = {"left_rear_speed": left_rear_wheel_speed, "left_rear_rpm": left_rear_wheel_rpm, "left_rear_wheel_odometer": left_rear_wheel_odometer}78 vehicle_speed = int((right_front_wheel_speed + right_rear_wheel_speed + left_front_wheel_speed + left_rear_wheel_speed)/4)79 average_wheel_rpm = int((right_front_wheel_rpm + right_rear_wheel_rpm + left_front_wheel_rpm + left_rear_wheel_rpm)/4)80 vehicle_odometer = ((right_front_wheel_odometer + right_rear_wheel_odometer + left_front_wheel_odometer + left_rear_wheel_odometer)/4)81 remaining_power = int(battery_capacity - vehicle_odometer)82 engine_rpm = int(average_wheel_rpm * 11)83 # JSON Key/Value pairs of telemetry84 vehiclepayload = json.dumps(85 {86 "vehicleid": vehicleid,87 "eventid": eventid,88 "time": actualtime,89 "timestamp": unixtime,90 "average_wheel_rpm": average_wheel_rpm,91 "engine_rpm": engine_rpm,92 "vehicle_speed": vehicle_speed,93 "vehicle_odometer": vehicle_odometer,94 "remaining_power": remaining_power,95 "right_front_wheel_rpm": right_front_wheel_rpm,96 "left_front_wheel_rpm": left_front_wheel_rpm,97 "right_rear_wheel_rpm": right_rear_wheel_rpm,98 "left_rear_wheel_rpm": left_rear_wheel_rpm,99 "right_front_wheel_speed": right_front_wheel_speed,100 "left_front_wheel_speed": left_front_wheel_speed,101 "right_rear_wheel_speed": right_rear_wheel_speed,102 "left_rear_wheel_speed": left_rear_wheel_speed,103 "right_front_wheel_odometer": right_front_wheel_odometer,104 "left_front_wheel_odometer": left_front_wheel_odometer,105 "right_rear_wheel_odometer": right_rear_wheel_odometer,106 "left_rear_wheel_odometer": left_rear_wheel_odometer,107 "dynamodb_ttl": dynamodb_ttl108 }109 )110 # print (vehiclepayload)111 return(vehiclepayload)112# Logging can be enabled by uncommenting below113# def on_log(client, userdata, level, buf):114 # print(msg.topic+" "+str(msg.payload))115 # print(Iot_Topic +str(msg.payload))116mqttc = paho.Client()117mqttc.on_connect = on_connect118mqttc.on_message = on_message119# mqttc.on_log = on_log120mqttc.tls_set(ca_path, certfile=cert_path, keyfile=key_path, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)121mqttc.connect(aws_rest_endpoint, awsport, keepalive=60)122# Begin reading sensor telemetry123mqttc.loop_start()124# drivetelemetry()125for r in range(10000000):126 # Sending telemetry to AWS IoT Service127 vehicle_topic = "/topics/DonkeyCars/AVAWS01"128 telemetry_payload = drivetelemetry()129 print(telemetry_payload)130 mqttc.publish(vehicle_topic, telemetry_payload, 1)...
Playwright error connection refused in docker
playwright-python advanced setup
How to select an input according to a parent sibling label
Error when installing Microsoft Playwright
Trouble waiting for changes to complete that are triggered by Python Playwright `select_option`
Capturing and Storing Request Data Using Playwright for Python
Can Playwright be used to launch a browser instance
Trouble in Clicking on Log in Google Button of Pop Up Menu Playwright Python
Scrapy Playwright get date by clicking button
React locator example
I solved my problem. In fact my docker container (frontend) is called "app" which is also domain name of fronend application. My application is running locally on http. Chromium and geko drivers force httpS connection for some domain names one of which is "app". So i have to change name for my docker container wich contains frontend application.
Check out the latest blogs from LambdaTest on this topic:
The sky’s the limit (and even beyond that) when you want to run test automation. Technology has developed so much that you can reduce time and stay more productive than you used to 10 years ago. You needn’t put up with the limitations brought to you by Selenium if that’s your go-to automation testing tool. Instead, you can pick from various test automation frameworks and tools to write effective test cases and run them successfully.
When it comes to web automation testing, there are a number of frameworks like Selenium, Cypress, PlayWright, Puppeteer, etc., that make it to the ‘preferred list’ of frameworks. The choice of test automation framework depends on a range of parameters like type, complexity, scale, along with the framework expertise available within the team. However, it’s no surprise that Selenium is still the most preferred framework among developers and QAs.
Playwright is a framework that I’ve always heard great things about but never had a chance to pick up until earlier this year. And since then, it’s become one of my favorite test automation frameworks to use when building a new automation project. It’s easy to set up, feature-packed, and one of the fastest, most reliable frameworks I’ve worked with.
The speed at which tests are executed and the “dearth of smartness” in testing are the two major problems developers and testers encounter.
With the rapidly evolving technology due to its ever-increasing demand in today’s world, Digital Security has become a major concern for the Software Industry. There are various ways through which Digital Security can be achieved, Captcha being one of them.Captcha is easy for humans to solve but hard for “bots” and other malicious software to figure out. However, Captcha has always been tricky for the testers to automate, as many of them don’t know how to handle captcha in Selenium or using any other test automation framework.
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.
Get 100 minutes of automation test minutes FREE!!