Best Python code snippet using localstack_python
Video.py
Source:Video.py  
1from typing import Iterable2from .. import db3from .BaseModel import BaseModel4import enum5class VideoType(str, enum.Enum):6    Trailer = "Trailer"7    Reaction = "Reaction"8class Video(BaseModel):9    """10    Video Model11    """12    __tablename__ = 'Video'13    id = db.Column(db.String(64), primary_key=True)14    type = db.Column(db.Enum(VideoType), nullable=False, default=VideoType.Reaction, primary_key=True)15    filename = db.Column(db.String(256), nullable=False)16    trailer_id = db.Column(db.String(64), db.ForeignKey('Video.id'), nullable=True, default=None)17    frame_count = db.Column(db.Integer, nullable=False)18    duration = db.Column(db.Float, nullable=False)19    finished_processing = db.Column(db.Boolean, nullable=False, default=False)20    progress = db.Column(db.Float, nullable=True, default=0.0)21    persons = db.relationship('Person', backref='video', lazy=True)22    key_moments = db.relationship('KeyMoment', backref='video', lazy=True)23    mood = db.relationship('OverallMood', backref='video', lazy=True)24    def __init__(self, id: str, filename: str, frame_count: int, duration: float, progress: float = 0.0,25                 finished_processing: bool = False):26        self.id = str(id)27        self.filename = str(filename)28        self.frame_count = int(frame_count)29        self.duration = float(duration)30        self.progress = float(progress)31        self.finished_processing = bool(finished_processing)32    @property33    def trailer(self):34        return db.object_session(self).query(Video).filter_by(id=self.trailer_id, type=VideoType.Trailer).first()35    @property36    def reactions(self):37        return db.object_session(self).query(Video).filter_by(trailer_id=self.id, type=VideoType.Reaction).all()38    def to_json(self, populate: Iterable = (), exclude_columns: Iterable = (), include_foreign_keys=False,39                base_url: str = None):40        json = BaseModel.to_json(self, populate, exclude_columns, include_foreign_keys)41        json['trailer_id'] = self.trailer_id42        json['reaction_ids'] = [reaction.id for reaction in self.reactions]43        if base_url is not None:44            json["img_url"] = f"{base_url}/{self.id}/thumbnail"45        return json46    def __repr__(self):...consumer.py
Source:consumer.py  
1import logging2import typing3from queue import Queue, Empty4from threading import Thread, Event5from enum import Enum6from gender_classification_pipeline.ml_assignment_proto.prediction_pb2 import Prediction7log = logging.getLogger(__file__)8logging.basicConfig(level=logging.INFO)9class Gender(Enum):10    MALE = 011    FEMALE = 112class PredictionConsumer(Thread):13    def __init__(self,14                 predictions_queue: Queue,      # The queue to read predictions from15                 finished_processing: Event,    # Signal to stop running16                 num_predictions_to_expect: typing.Optional[int] = None17                 ):18        super(PredictionConsumer, self).__init__()19        self.predictions_queue = predictions_queue20        self.finished_processing = finished_processing21        self.num_predictions_to_expect = None22        self.num_predictions_processed = 023        self.predicted_genders = {24            Gender.MALE: 0,25            Gender.FEMALE: 026        }27    @property28    def num_consumed(self):29        return self.num_predictions_processed30    def run(self) -> None:31        while not self.finished_processing.is_set() or not self.predictions_queue.empty():32            try:33                prediction = self.predictions_queue.get(timeout=5.0)34            except Empty:35                continue36            log.info(f"[ Consumer ] Acquired prediction (name = {prediction.user.name})")37            gender = prediction.predicted_gender38            self.num_predictions_processed += 139            if gender == Prediction.Gender.Value("MALE"):40                self.predicted_genders[Gender.MALE] += 141            else:42                self.predicted_genders[Gender.FEMALE] += 143            log.info(f"[ Consumer ] Processed {self.num_predictions_processed} so far, "44                     f"{self.predicted_genders[Gender.MALE]} males and {self.predicted_genders[Gender.FEMALE]} females")...pipeline.py
Source:pipeline.py  
1import logging2import time3from queue import Queue4import os5from gender_classification_pipeline.consumer import PredictionConsumer6from gender_classification_pipeline.generator import SampleGenerator7from threading import Event8log = logging.getLogger(__file__)9logging.basicConfig(level=logging.INFO)10class GenderClassificationPipeline(object):11    data_path = os.path.join(os.path.dirname(__file__), "data/features.dat")12    def __init__(self, predictor_class, num_samples_to_generate=100):13        self.num_samples_to_generate = num_samples_to_generate14        self.finished_processing = Event()15        self.samples_queue = Queue()16        self.predictions_queue = Queue()17        self.predictor = predictor_class(self.samples_queue, self.predictions_queue, self.finished_processing)18        self.generator = SampleGenerator(self.samples_queue, GenderClassificationPipeline.data_path,19                                         num_samples_to_generate=num_samples_to_generate)20        self.consumer = PredictionConsumer(self.predictions_queue, self.finished_processing)21    def run(self):22        log.info(f"[ Pipeline ] Starting execution - processing {self.num_samples_to_generate} examples.")23        self.generator.start()24        self.predictor.start()25        self.consumer.start()26        while self.consumer.num_consumed < self.num_samples_to_generate:27            time.sleep(1)28        self.finished_processing.set()29        self.generator.join()30        self.predictor.join()31        self.consumer.join()...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!!
