How to use wheel method in tox

Best Python code snippet using tox_python

wheel_builder.py

Source:wheel_builder.py Github

copy

Full Screen

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...

Full Screen

Full Screen

Car.js

Source:Car.js Github

copy

Full Screen

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; }...

Full Screen

Full Screen

wheel.py

Source:wheel.py Github

copy

Full Screen

...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)...

Full Screen

Full Screen

AWSAutonomousVehicleIOT.py

Source:AWSAutonomousVehicleIOT.py Github

copy

Full Screen

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)...

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run tox 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