diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..3b664107303df336bab8010caad42ddaed24550e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.ignoreLimitWarning": true +} \ No newline at end of file diff --git a/Assets/SVG/Background.svg b/Assets/SVG/Background.svg new file mode 100644 index 0000000000000000000000000000000000000000..88069e3f5a43986771e3279c6dab0572b6a12014 --- /dev/null +++ b/Assets/SVG/Background.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + viewBox="0 0 812 812" + version="1.1" + id="svg23" + sodipodi:docname="Background.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <metadata + id="metadata27"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="996" + id="namedview25" + showgrid="false" + inkscape:zoom="0.29064039" + inkscape:cx="416.32203" + inkscape:cy="406" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1-2" /> + <defs + id="defs15"> + <style + id="style2">.cls-1{fill:#130f55;}.cls-2{fill:url(#linear-gradient);}</style> + <linearGradient + id="linear-gradient" + x1="70.59" + y1="405.33" + x2="740.93" + y2="405.33" + gradientTransform="rotate(-0.25,489.57609,402.13982)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0" + stop-color="#db589a" + stop-opacity="0.9" + id="stop4" /> + <stop + offset="0.13" + stop-color="#d261a2" + stop-opacity="0.91" + id="stop6" /> + <stop + offset="0.33" + stop-color="#ba78b6" + stop-opacity="0.93" + id="stop8" /> + <stop + offset="0.6" + stop-color="#939fd8" + stop-opacity="0.96" + id="stop10" /> + <stop + offset="0.87" + stop-color="#6cf" + id="stop12" /> + </linearGradient> + </defs> + <g + id="Layer_2" + data-name="Layer 2" + transform="translate(203,-275.25424)"> + <g + id="Layer_1-2" + data-name="Layer 1"> + <rect + class="cls-1" + width="812" + height="812" + rx="96.5" + id="rect17" + x="-203" + y="278.69492" + style="fill:#130f55" /> + </g> + </g> +</svg> diff --git a/Assets/SVG/Logo.svg b/Assets/SVG/Logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..15ab8dbc5e79620e6d9c542d0bd8d108019f5766 --- /dev/null +++ b/Assets/SVG/Logo.svg @@ -0,0 +1,99 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + viewBox="0 0 812 812" + version="1.1" + id="svg23" + sodipodi:docname="Logo.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <metadata + id="metadata27"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="996" + id="namedview25" + showgrid="false" + inkscape:zoom="0.29064039" + inkscape:cx="416.32203" + inkscape:cy="406" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1-2" /> + <defs + id="defs15"> + <style + id="style2">.cls-1{fill:#130f55;}.cls-2{fill:url(#linear-gradient);}</style> + <linearGradient + id="linear-gradient" + x1="70.59" + y1="405.33" + x2="740.93" + y2="405.33" + gradientTransform="rotate(-0.25,498.17466,-3540.5782)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0" + stop-color="#db589a" + stop-opacity="0.9" + id="stop4" /> + <stop + offset="0.13" + stop-color="#d261a2" + stop-opacity="0.91" + id="stop6" /> + <stop + offset="0.33" + stop-color="#ba78b6" + stop-opacity="0.93" + id="stop8" /> + <stop + offset="0.6" + stop-color="#939fd8" + stop-opacity="0.96" + id="stop10" /> + <stop + offset="0.87" + stop-color="#6cf" + id="stop12" /> + </linearGradient> + </defs> + <g + id="Layer_2" + data-name="Layer 2"> + <g + id="Layer_1-2" + data-name="Layer 1"> + <path + class="cls-2" + d="m 145.99339,248.7 c 22.2,-9.46 43.08,-5.64 71,-0.31 34.42,6.57 63.46,22.49 78.13,30.66 7.43,4.14 12.67,7.29 18.78,11.3 24.73,16.23 41.62,33.3 110.63,83.14 10,7.22 14.93,10.9 18.06,12.93 9.3,6 101.08,63.72 181.13,31.21 37.28,-15.14 43.41,-38.21 73.85,-36.32 20.62,1.29 44.47,13.53 55.15,35.76 12.16,25.28 1.21,50.8 -2.74,60 -7.09,16.53 -18.41,29.05 -32.82,40.14 -82.14,63.24 -183.96,50.79 -183.96,50.79 0,0 -78.31,-9.58 -144.09,-61.35 -5.24,-4.13 -21.86,-15.44 -44.15,-33.81 a 358.85,358.85 0 0 0 -52.09,-35.78 c 0,0 -62.88,-32.73 -109.21,-32.52 0,0 -22.79,0 -23,0.09 v 0 c -22.77,3.23 -29.75,13.85 -40.94,12.18 -17.77,-2.65 -26.840001,-33.39 -28.170001,-37.88 -12.82,-43.44 5.13,-109.23 54.440001,-130.23 z" + id="path19" + style="fill:url(#linear-gradient)" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/Assets/SVG/LogoStart.png b/Assets/SVG/LogoStart.png new file mode 100644 index 0000000000000000000000000000000000000000..4f45380da5d25a52ad61fc9c38cf29248436c304 Binary files /dev/null and b/Assets/SVG/LogoStart.png differ diff --git a/Assets/error.png b/Assets/error.png new file mode 100644 index 0000000000000000000000000000000000000000..a79cb278f005933b436a0a8fd0ac4263139ccafd Binary files /dev/null and b/Assets/error.png differ diff --git a/Assets/readme/AutoTrain.png b/Assets/readme/AutoTrain.png old mode 100644 new mode 100755 index 3cee14d8b7d352eae271bf40ca8b449b3a1c14b1..e14fe38e66d69e13cf13c3d47263e7a8b1535000 Binary files a/Assets/readme/AutoTrain.png and b/Assets/readme/AutoTrain.png differ diff --git a/Assets/readme/AutoTrain1.png b/Assets/readme/AutoTrain1.png new file mode 100644 index 0000000000000000000000000000000000000000..3cee14d8b7d352eae271bf40ca8b449b3a1c14b1 Binary files /dev/null and b/Assets/readme/AutoTrain1.png differ diff --git a/Assets/readme/Collecting1.gif b/Assets/readme/Collecting1.gif index 7bc533f0870513b07ed73e33ec38aee1b162e97a..1b09f69ad83c362aff9b2aa6f93dcc0d930eaf00 100644 Binary files a/Assets/readme/Collecting1.gif and b/Assets/readme/Collecting1.gif differ diff --git a/Assets/readme/Collecting2.gif b/Assets/readme/Collecting2.gif index 2c874d162024cead79bf6470e26c040410d60345..a3b7e5c3b4492cd61256238fa66b45163f17d051 100644 Binary files a/Assets/readme/Collecting2.gif and b/Assets/readme/Collecting2.gif differ diff --git a/Assets/readme/Detect1.gif b/Assets/readme/Detect1.gif index 1d6b46e7316b309bc29222bbe804b03f4c2afeae..39f5a70d98b219853939bd06ba0178efe1a207c7 100644 Binary files a/Assets/readme/Detect1.gif and b/Assets/readme/Detect1.gif differ diff --git a/Assets/readme/Detect2.gif b/Assets/readme/Detect2.gif index ea499a1b0bf31210e3bd048a81f2ba453b458e02..7a0eb432e4d6ffe097d27496a10a40cb288a1164 100644 Binary files a/Assets/readme/Detect2.gif and b/Assets/readme/Detect2.gif differ diff --git a/Assets/readme/FastTrack.png b/Assets/readme/FastTrack.png old mode 100644 new mode 100755 index f89978e2104b37284db2c250781f7d8a07bd93f7..25f97d179edafee0d69b86d31037ec57d6001065 Binary files a/Assets/readme/FastTrack.png and b/Assets/readme/FastTrack.png differ diff --git a/Assets/readme/FastTrack1.png b/Assets/readme/FastTrack1.png new file mode 100644 index 0000000000000000000000000000000000000000..f89978e2104b37284db2c250781f7d8a07bd93f7 Binary files /dev/null and b/Assets/readme/FastTrack1.png differ diff --git a/Assets/readme/Logo.png b/Assets/readme/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe5cf7be22a51bc1fa095f9469fb545d0e39218 Binary files /dev/null and b/Assets/readme/Logo.png differ diff --git a/Assets/readme/SignTrack.png b/Assets/readme/SignTrack.png old mode 100644 new mode 100755 index 1213cc57bdd153d642f37d5f3f16e5904d9db233..fac52bcc56afcc2d531228701079e16ebe4a6d73 Binary files a/Assets/readme/SignTrack.png and b/Assets/readme/SignTrack.png differ diff --git a/Assets/readme/SignTrack1.png b/Assets/readme/SignTrack1.png new file mode 100644 index 0000000000000000000000000000000000000000..1213cc57bdd153d642f37d5f3f16e5904d9db233 Binary files /dev/null and b/Assets/readme/SignTrack1.png differ diff --git a/Assets/readme/SignTrack2.png b/Assets/readme/SignTrack2.png new file mode 100755 index 0000000000000000000000000000000000000000..287e37192bdbfc096151843fba9974319d6ac614 Binary files /dev/null and b/Assets/readme/SignTrack2.png differ diff --git a/Assets/readme/rect17.png b/Assets/readme/rect17.png new file mode 100644 index 0000000000000000000000000000000000000000..b21d3736fe626c0c9fbc158952d546fa90301230 Binary files /dev/null and b/Assets/readme/rect17.png differ diff --git a/Dataset.zip b/Dataset.zip index fc888a45c4d4344ef36ba1a31ab72ea402842be6..55812fc2f359d7224bc7a3871dd88a4c89249936 100644 Binary files a/Dataset.zip and b/Dataset.zip differ diff --git a/Insights/ModelID.npy b/Insights/ModelID.npy deleted file mode 100644 index e57e8a1c5ae8ab426be9752c008a16ec0fa24da8..0000000000000000000000000000000000000000 Binary files a/Insights/ModelID.npy and /dev/null differ diff --git a/Insights/SignTrack.h5 b/Insights/SignTrack.h5 deleted file mode 100644 index ab857b7eaa1780546169c26c297e63f11919babb..0000000000000000000000000000000000000000 Binary files a/Insights/SignTrack.h5 and /dev/null differ diff --git a/README.md b/README.md index ca680d2bdcada9ef7b4dbbab0a05bc77e05a17ee..8fd9dfb50014ffa2671e67cc2639ab94f5af90c3 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ ## What is SignTrack -SignTrack is a sign language transcriber. It analyzes, processes, and recognizes sign language in real-time, with exceptional accuracy and efficiency. SignTrack helps make computers more open for everyone by taking a human-centric approach to computing. +SignTrack is a sign language transcriber that analyzes, processes, and recognizes sign language in real-time with remarkable accuracy and efficiency. It takes a people-centered approach to computing, aiming to make computers more accessible and inclusive for everyone. By seamlessly converting sign language into written language, SignTrack breaks down communication barriers and enables meaningful connections. It empowers individuals from diverse backgrounds to express themselves and be understood. With SignTrack, the beauty of sign language comes to life, ensuring that everyone's voice is heard and valued. <br /> ## How it works -SignTrack utilizes a state-of-the-art LSTM model that predicts based on a sequence of data, enabling the detection of whole phrases and moving signs. To further improve precision and efficiency, SignTrack has been trained only on key hand and pose landmarks, that have been extracted using MediaPipe. That way it also remains accurate on every skin shade. +SignTrack harnesses the power of a state-of-the-art LSTM (Long Short-Term Memory) model, which leverages sequence-based data for predictions. This allows SignTrack to detect entire phrases and capture dynamic movements within sign language gestures. To enhance precision and efficiency, SignTrack focuses its training on key hand and pose landmarks. These essential landmarks are extracted using MediaPipe, a robust framework for pose estimation. By concentrating on these key landmarks, SignTrack ensures accurate recognition across various skin shades, promoting inclusivity and accessibility. <br /> @@ -32,13 +32,17 @@ SignTrack utilizes a state-of-the-art LSTM model that predicts based on a sequen ### Data Collection -Making the data collecting experience friendlier for the user has been one of our top priorities. That's why we made sure to create an easy-to-use data collection user interface, even for those with minimal coding skills. +We prioritize making data collection user-friendly, even for non-coders. Our interface is easy to navigate, ensuring a seamless experience. -Data plays a fundamental role in creating a great model that's both accurate and has great performance. The data collection program has been designed to generate data suitable for training the model. Added to that, it has been made to help our users to create an accurate model. With breaks between training sessions and intuitive design, anyone can create a good training dataset. +Data is crucial for exceptional model performance. Our program generates training data and aids users in creating accurate models. With breaks between sessions and an intuitive design, anyone can create a high-quality training dataset. Continuous optimization empowers developers to build custom models that meet their needs. SignTrack DataCollect is now smoother and more reliable. -Another feature of SignTrack Data Collect is flipping the image to generate data as if you signed with the other hand too! Creating a model that can make equally accurate predictions on both hands. +Before saving a sequence in the dataset, SignTrack employs a verification process to ensure that hands are visible within the frame. This approach eliminates unnecessary data and enhances the overall quality and accuracy of the collected dataset. -Privacy is at the center of SignTrack. The collected data is free of personal data, like raw images. It only stores numerical values of the keypoint positions as NumPy arrays, making users feel more comfortable exchanging datasets. +Another standout feature is dynamic image flipping, generating data that simulates signing with the opposite hand. This enables unparalleled accuracy and versatility, ensuring precise predictions for both hands across all signing variations. + +Privacy is a top priority. SignTrack maintains data privacy by excluding personal information and identifiers. + +SignTrack DataCollect offers a comprehensive solution: user-friendly interface, robust data collection capabilities and advanced augmentation techniques. SignTrack empowers developers to create accurate and inclusive sign language recognition models tailored to their application requirements. <p align="center"> <img src="Assets/readme/Collecting1.gif"> @@ -48,24 +52,33 @@ Privacy is at the center of SignTrack. The collected data is free of personal da ## Model Training <p align="center"> - <img img width="300" height="50" src="Assets/readme/AutoTrain.png"> + <img img width="646" height="84.4" src="Assets/readme/AutoTrain.png"> </p> -Training a neural network can become confusing. Everything in SignTrack is automated, with the power of AutoTrain. AutoTrain automatically sets training parameters, such as the number of epochs and data split. Forming a training process that requires minimal or no adjustment from the user. +Training a neural network can become confusing. Everything in SignTrack is automated, with the power of AutoTrain+. AutoTrain+ automatically sets training parameters, such as the number of epochs and data split, forming a training process that requires minimal or no adjustment from the user. AutoTrain+ ensures that you get the most out of your dataset by setting all the training parameters for you while automatically saving the best-performing model. It takes care of the training process, making it efficient and effective. During training, AutoTrain+ continuously checks for overtraining and reverts to a previous version of the model if needed. This helps prevent the model from overfitting and ensures optimal performance. + +In addition to AutoTrain+, SignTrack Revision 1 introduces the new InSpace Engine, a revolutionary form of data augmentation. The InSpace Engine allows for the simulation of different camera angles, providing more diverse training data. This augmentation technique enhances the model's ability to generalize and recognize sign language gestures accurately, even from different perspectives. + +What's more, AutoTrain+ has been redefined to make for an even faster tracking experience. FastTrack+ has been implemented right through the model training process. Utilizing FastTrack+ during inference significantly improves the model's ability to handle quicker signing speeds, making SignTrack a robust and versatile tool for real-time sign language recognition. -AutoTrain makes sure that you get the most out of your dataset. It sets all the training parameters for you while automatically saving the best-performing model. What's more AutoTrain has now been redefined to make for an even faster tracking experience. FastTrack has been implemented right through the model training proccess, a new way of data augmentation, that improves the overall performance of the model, not only regarding FastTrack. ## SignTrack Main <p align="center"> - <img img width="300" height="50" src="Assets/readme/FastTrack.png"> + <img img width="319" height="84.4" src="Assets/readme/FastTrack.png"> </p> -Utilizing the created model turned out to be an equally fundamental part of the project. Some people sign faster than the 24 frames that the model requires for making predictions. FastTrack is built into the __SignTrack main.py__ to solve this problem. It randomly duplicates the frames that the model's predictions are based on, until it gets the desired amount of frames. At the same time, making sure that the model makes predictions only on frames in which the hands are on the frame, enhancing once again the overall performance. +All the new updates form a unique and refreshing experience. SignTrack Revision 1 can make up to 6 times faster predictions than our previous version with less lag between signs, made possible by the reimagined FastTrack+ and InSpace Engine. + +With FastTrack+, we utilize hand landmarks to analyze frames before and after the current one, enabling us to add contextual information to each frame. By detecting and comparing the hand landmarks in the previous and next frames, FastTrack+ intelligently calculates the differences between them. This process allows us to extract valuable insights and enhance the understanding of sign language gestures by incorporating temporal context. -Optimizations form an uninterrupted experience. SignTrack is made to use resources only when needed. For example, the SignTrack model is only called to make predictions when the hands have been visible on the scene. While the needed punctuation is only predicted after the user has completed forming the sentence. +With the InSpace Engine, we redefine what's possible in sign language recognition, empowering users to communicate naturally and effortlessly, irrespective of camera positioning or distance. This innovative technology represents a major leap forward, revolutionizing the accuracy and usability of sign language recognition systems. -The consistent, unique, and identifiable design continues in the main program while keeping on the display the needed information to understand how the model performs on specific signs. That can save a lot of time for those who work on making their SignTrack model. +SignTrack offers an uninterrupted experience through innovative optimizations. We have designed SignTrack to utilize resources only when necessary, ensuring efficient usage. + +For instance, the SignTrack model is intelligently triggered to make predictions only when hands are visible within the scene. This intelligent activation conserves resources and optimizes performance, resulting in a smooth and responsive user experience. + +But that's not all. We have taken SignTrack a step further. SignTrack can now understand when the user has completed a word, enabling it to immediately begin detection for the next one. This seamless transition between words ensures a fluid and natural interaction, making sign language recognition with SignTrack even more intuitive and efficient. <p align="center"> <img src="Assets/readme/Detect1.gif"> @@ -74,11 +87,14 @@ The consistent, unique, and identifiable design continues in the main program wh ## Dataset -SignTrack comes with a dataset, consisted of 193,945 collected keypoint sets for ASL, and can be easily extended. If the given model does not perform as expected you can always add more data using DataCollect. When creating your dataset remember to make sure to try signing from different angles and positions to create a more generalized model, that will work on a broader spectrum of angles. +SignTrack is bundled with a comprehensive dataset that includes 25 American Sign Language (ASL) words and phrases. This dataset serves as a solid foundation for testing. However, if you find that the model's performance does not meet your expectations, SignTrack provides a convenient solution through DataCollect. + +Remember, the goal is to train SignTrack to accurately interpret sign language in real-world scenarios. So, capturing data from different angles and positions enhances the model's ability to handle variations commonly encountered in everyday signing. ### Illustration -All of the illustrations have been designed from the ground up for SignTrack. In the assets is a directory with SVG versions of them. You can always tinker with them using your favorite open-source illustration tool, like Inkscape. +Each illustration has been created from scratch, ensuring a unique and tailored visual representation. In the assets directory, you will find SVG versions of these illustrations, providing flexibility and the ability to customize them according to your preferences. Feel free to modify and tinker with the illustrations using popular open-source illustration tools such as Inkscape. + <br /> ## Dependances diff --git a/tests/Packr.py b/experimental/Packr.py similarity index 100% rename from tests/Packr.py rename to experimental/Packr.py diff --git a/signtrack/main.py b/experimental/SignTrack Bolt.py similarity index 93% rename from signtrack/main.py rename to experimental/SignTrack Bolt.py index 072d17f9f6f8e29a6e9230393c2b96ec5c2eceb3..6f85e9443cae2896c5f3b8ba0f9a35598ba511d0 100644 --- a/signtrack/main.py +++ b/experimental/SignTrack Bolt.py @@ -20,10 +20,10 @@ pun = pipeline('ner', model=model, tokenizer=tokenizer) # The number of frames per sequence that the model has been trained on -seq_length = 24 +seq_length = 12 # Choose camera input -cap = cv2.VideoCapture(1) +cap = cv2.VideoCapture(0) # Resize camera input cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) @@ -37,16 +37,17 @@ signs = np.load(Packr.ModelIDUnpack()) mp_holistic = mp.solutions.holistic # Holistic model mp_drawing = mp.solutions.drawing_utils # Drawing utilities -# Setting up the model archtecture +# Setting up model parameters model = Sequential() model.add(LSTM(64, return_sequences=True, - activation='relu', input_shape=(24, 258))) + activation='relu', input_shape=(12, 258))) model.add(LSTM(128, return_sequences=True, activation='relu')) model.add(LSTM(64, return_sequences=False, activation='relu')) model.add(Dense(64, activation='relu')) model.add(Dense(32, activation='relu')) model.add(Dense(signs.shape[0], activation='softmax')) + # Loading the model model.load_weights("tmp/Insights/SignTrack.h5") @@ -154,11 +155,11 @@ def prob_vis(res, actions, input_frame): text = '' seq, sentence = [], [] HandsOnPrevFrames = [False] -threshold = 0.90 +threshold = 0.8 res = np.zeros(shape=signs.shape[0]) # Set mediapipe model holistic = mp_holistic.Holistic( - min_detection_confidence=0.5, min_tracking_confidence=0.5) + min_detection_confidence=0.8, min_tracking_confidence=0.8) while cap.isOpened(): @@ -188,7 +189,7 @@ while cap.isOpened(): if True in HandsOnPrevFrames[-5:]: if HandsOnScene(results): seq.append(keypoints) - seq = seq[-24:] + seq = seq[-seq_length:] text = grammar_correct((' '.join(sentence))) # Else if hands are not in the scene for the last 5 frames clear sequence data else: @@ -216,12 +217,13 @@ while cap.isOpened(): text = (grammar_correct(text[1:-2])).capitalize() sentence = [] - # If there are 24 frames in seq then call the model to predict + # If there are 12 frames in seq then call the model to predict if len(seq) == seq_length: res = model.predict(np.expand_dims(seq, axis=0))[0] + """ - In case there is more than 65% the amount of needed data + In case there is more than 65% the nummber of needed data call the model to predict in a new version of seq with randomly duplicated frames """ @@ -230,7 +232,8 @@ while cap.isOpened(): missing = seq_length - len(seq) seqpros = seq for i in range(missing): - rand = random.randint(0, len(seq)-1) + rand = random.randint(2, len(seq)-2) + pedictedframe = np.divide(np.add(seq[rand],seq[rand+1]),2) seqpros.insert(rand, seq[rand]) res = model.predict(np.expand_dims(seqpros, axis=0))[0] seqpros = [] @@ -244,6 +247,10 @@ while cap.isOpened(): if len(sentence) > 0: if signs[np.argmax(res)] != sentence[-1]: sentence.append(signs[np.argmax(res)]) + else: + text = grammar_correct((' '.join(sentence))) + seq = [] + res = np.zeros(shape=len(signs)) # If it is empty just add the prediction in the sentence else: sentence.append(signs[np.argmax(res)]) diff --git a/tests/SignTrack_DataColect Bolt.py b/experimental/SignTrack_DataColect Bolt.py similarity index 91% rename from tests/SignTrack_DataColect Bolt.py rename to experimental/SignTrack_DataColect Bolt.py index c9c190c16d745cd6e7a48d8dd4667cf5e43f09b6..2e485bf2fd1afb40ced5c85ba3be722103f5eb17 100644 --- a/tests/SignTrack_DataColect Bolt.py +++ b/experimental/SignTrack_DataColect Bolt.py @@ -12,10 +12,10 @@ from essentials import mediapipe_detection, extract_keypoints, display_styled_la data_path = os.path.join('test') # Actions that we try to detect, Changing requires changes in Signtrack_Train -signs = np.array(["sorry"]) +signs = np.array(["see"]) # Number of sequences to be collected for each action -no_datapacks = 3 +no_datapacks = 6 # Frames per sequence, Changing requires changes in Signtrack_Train seq_length = 24 @@ -140,6 +140,19 @@ pics = [] def ProcessImg(pics,seq): framenum=0 for frame in pics: + + # Read camera feed + ret, frame = cap.read() + pics.append(frame) + + # Detect hand and pose landmarks + img, results = mediapipe_detection(frame, holistic) + + # Draw landmarks + display_styled_landmarks(img, results) + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, False)) + img, results = mediapipe_detection(frame, holistic) keypoints = extract_keypoints(results) npy_path = os.path.join( @@ -157,6 +170,8 @@ def ProcessImg(pics,seq): data_path, sign, str((2 * seq + 1) + exdt), str(framenum)) np.save(npy_path_flipped,keypoints_flipped) framenum+=1 + if cv2.waitKey(10) & 0xFF == ord('q'): + break pics = [] @@ -177,13 +192,9 @@ for sign in signs: # Detect hand and pose landmarks img, results = mediapipe_detection(frame, holistic) - # Loading the dimentions of cap and the assets - # Draw landmarks display_styled_landmarks(img, results) - - cv2.imshow('SignTrack Data Collect', - Graphics(img, sign, seq, False)) + cv2.imshow('SignTrack Data Collect', Graphics(img, sign, seq, True)) @@ -202,10 +213,11 @@ for sign in signs: cv2.imshow('SignTrack Data Collect', Graphics(img, sign, seq, False)) - cv2.waitKey(1000) - if pics: - ProcessImg(pics,seq) - pics.clear() + if cv2.waitKey(10) & 0xFF == ord('q'): + break + + ProcessImg(pics,seq) + pics.clear() cap.release() cv2.destroyAllWindows() diff --git a/experimental/SignTrack_DataColect.py b/experimental/SignTrack_DataColect.py new file mode 100644 index 0000000000000000000000000000000000000000..14f951911f31cfc30c8c6877cd3030a3d89030f2 --- /dev/null +++ b/experimental/SignTrack_DataColect.py @@ -0,0 +1,259 @@ +# Importing dependancies +import time +import cv2 +import cvzone +import numpy as np +import os +import mediapipe as mp +from pathlib import Path +from essentials import mediapipe_detection, extract_keypoints, display_styled_landmarks, HandsOnScene + +# Dataset export location, Changing requires changes in Signtrack_Train +data_path = os.path.join('test') + +# Actions that we try to detect, Changing requires changes in Signtrack_Train +signs = np.array(["see"]) + +# Number of sequences to be collected for each action +no_datapacks = 3 + +# Frames per sequence, Changing requires changes in Signtrack_Train +seq_length = 24 + +#Time between sessions (in seconds) +breaktime = 0.7 + +# Choose camera input +cap = cv2.VideoCapture(1) + +# Resize camera input +cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) +cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) + +mp_holistic = mp.solutions.holistic # Holistic model +mp_drawing = mp.solutions.drawing_utils # Drawing utilities + + +def existing_data(sign): + ''' + Checks for existing data in the + dataset folder, to avoid errors while + saving new data. + ''' + existing_data = 0 + path = Path(data_path + '/' + sign) + if path.exists(): + existing_data = len(os.listdir(data_path + '/' + sign)) + return existing_data + +def delete_file(file_path): + try: + os.remove(file_path) + except FileNotFoundError: + pass + except PermissionError: + pass + + +for sign in signs: + ''' + Generates new empty forlders, + after taking into account existing data, + where new data wil be saved. + ''' + exdt = existing_data(sign) + for seq in range(no_datapacks * 2): + try: + os.makedirs(os.path.join(data_path, sign, + str((seq) + exdt))) + except: + pass + +# Import image assets and resize them to fit the output frame + +AssetErr = cv2.imread("Assets/error.png", cv2.IMREAD_UNCHANGED) +AssetErr = cv2.resize(AssetErr, (0, 0), None, 0.5, 0.5) + +AssetCol = cv2.imread("Assets/Asset_col.png", cv2.IMREAD_UNCHANGED) +AssetCol = cv2.resize(AssetCol, (0, 0), None, 0.5, 0.5) + +AssetNCol = cv2.imread("Assets/Asset_ncol.png", cv2.IMREAD_UNCHANGED) +AssetNCol = cv2.resize(AssetNCol, (0, 0), None, 0.5, 0.5) + +AssetCircle = cv2.imread("Assets/Circle.png", cv2.IMREAD_UNCHANGED) +AssetCircle = cv2.resize(AssetCircle, (0, 0), None, 0.5, 0.5) + +AssetBar = cv2.imread("Assets/Bar.png", cv2.IMREAD_UNCHANGED) +AssetBar = cv2.resize(AssetBar, (0, 0), None, 0.5, 0.5) + + +def Graphics(img, sign, sequence, collecting, error): + ''' + Add the text and the assets to the final + display output + ''' + # Adds the circle around the number of sequence + # It is displayed at the 1/3 of frame's width (centered) + # And at the frame's heignt minus it's height + img = cvzone.overlayPNG( + img, AssetCircle, [round((wb/3-wc/2)/2), hb-hf]) + + # Adds the bar around the current collected sign + # It is displayed at the 1/4 of frame's width from the right (centered) + # Vertically, it is located at the lowest part of the picture + img = cvzone.overlayPNG( + img, AssetBar, [round(wb-wb/4-wc/2), hb-hf]) + + # This adds the text of the sequence counter + # Its location is exactly the same as of its circle around it + # Only difference is that its possition also changes + # regarding the number of letters + cv2.putText(img, str(sequence), (round((wb/3-wc/2)/2 - (len(str(sequence)))*7.5 + 28), + hb-hf+23), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 1, cv2.LINE_AA) + + # Prints the curent collected sign in the frame + # Its location is exactly the same as of its bar around it + # Only difference is that its possition also changes + # regarding the number of letters + cv2.putText(img, str(sign), (round(wb-wb/4-wc/2 + wbar/2-len(sign)*7.5), hb-hf+22), + cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 1, cv2.LINE_AA) + + # Displaying the collecting indication at the center + if collecting: + img = cvzone.overlayPNG( + img, AssetCol, [round(wb/2-wf/2), hb-hf]) + else: + + if error: + img = cvzone.overlayPNG( + img, AssetErr, [round(wb/2-wf/2), hb-hf]) + else: + img = cvzone.overlayPNG( + img, AssetNCol, [round(wb/2-wf/2), hb-hf]) + return img + + +# Setting mediapipe parameters amd initiaize a diferent model for the flipped image +''' +Mediapipe uses an LSTM model, just like SignTrack, that means that the results are made +based on a sequence of data. Thus when trying to make predictions on the flipped image it is +important to utilize a different version of the Mediapipe model, to avoit the model's confusion. +''' + +holisticf = mp_holistic.Holistic( + min_detection_confidence=0.5, min_tracking_confidence=0.5) + +holistic = mp_holistic.Holistic( + min_detection_confidence=0.5, min_tracking_confidence=0.5) + + +def DataAugm(frame): + ''' + Gets as input a frame and outputs the keypoints data of the flipped image + ''' + frame_fliped = cv2.flip(frame, 1) + img_flipped, results_flipped = mediapipe_detection( + frame_fliped, holisticf) + keypoints_flipped = extract_keypoints(results_flipped) + return keypoints_flipped + +# Loading the dimentions of cap and the assets +hf, wf, cf = AssetCol.shape +hb, wb, cb = (480, 640, 3) +hc, wc, cc = AssetCircle.shape +hbar, wbar, cbar = AssetBar.shape + + +FailedSave = False + +# Loop through each sign +for sign in signs: + exdt = existing_data(sign) - (no_datapacks * 2) + # Loop through sequences aka videos + for seq in range(no_datapacks): + visframes = 0 + frame_num = 0 + # Loop through video length aka sequence length + while True: + + # Read camera feed + ret, frame = cap.read() + + # Detect hand and pose landmarks + img, results = mediapipe_detection(frame, holistic) + + # Draw landmarks + display_styled_landmarks(img, results) + + if HandsOnScene(results): + visframes +=1 + + + + # Export keypoints + keypoints = extract_keypoints(results) + + # Save the landmarks as an numpy array + npy_path = os.path.join( + data_path, sign, str((2 * seq) + exdt), str(frame_num)) + np.save(npy_path, keypoints) + + # Save the landmarks of the flipped image as an numpy array + npy_path_flipped = os.path.join( + data_path, sign, str((2 * seq + 1) + exdt), str(frame_num)) + np.save(npy_path_flipped, DataAugm(frame)) + + ''' + The wait logic, + If the collected sequence is on its first frame, + changes the apearence of the image accordingly. + ''' + if frame_num == 0: + start_time = time.time() + + + while True: + # Read camera feed + ret, frame = cap.read() + img, results = mediapipe_detection(frame, holistic) + + # Draw landmarks + display_styled_landmarks(img, results) + + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, False, FailedSave)) + if cv2.waitKey(1) & 0xFF == ord('q'): + break + + elapsed_time = time.time() - start_time + if elapsed_time >= breaktime: + break + if frame_num == int(seq_length) - 1: + + if int(visframes) < 0.8 * int(seq_length): + for frame in range(seq_length): + npy_path = os.path.join( + data_path, sign, str((2 * seq) + exdt), (str(frame)+ '.npy')) + + delete_file(npy_path) + + npy_path_flipped = os.path.join( + data_path, sign, str((2 * seq + 1) + exdt), (str(frame)+ '.npy')) + delete_file(npy_path_flipped) + + frame_num = 0 + FailedSave = True + else: + FailedSave = False + break + + else: + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, True, False)) + frame_num +=1 + + if cv2.waitKey(10) & 0xFF == ord('q'): + break + +cap.release() +cv2.destroyAllWindows() diff --git a/experimental/SignTrack_Train.py b/experimental/SignTrack_Train.py new file mode 100644 index 0000000000000000000000000000000000000000..156d5963067eec2866e953e1eafbce92690d28bc --- /dev/null +++ b/experimental/SignTrack_Train.py @@ -0,0 +1,181 @@ +from calendar import EPOCH +from tensorflow.keras.layers import LSTM, Dense +from tensorflow.keras.models import Sequential +from keras.callbacks import History +import numpy as np +import os +from matplotlib import pyplot as plt +from sklearn.model_selection import train_test_split +from tensorflow.keras.utils import to_categorical +import random + +from Packr import ModelPack + +# Path for exported data, numpy arrays +DATA_PATH = os.path.join('Dataset') + +# Path to save model +MODEL_PATH = 'Insights/SignTrack.h5' + +# Signs that we try to detect +signs = np.array([ 'thank you', 'good', 'how', 'yes', + 'hello', "what's up", 'fine', 'you', 'no']) + +# Videos are going to be 24 frames in length +sequence_length = 24 + + +# Creating a label map, where each sign is assigned to a specific numerical value +label_map = {label: num for num, label in enumerate(signs)} + +def rotate_point(point, angles): + x, y, z = point + rx, ry, rz = np.radians(angles) + + # Rotate around x-axis + y_prime = y * np.cos(rx) - z * np.sin(rx) + z_prime = y * np.sin(rx) + z * np.cos(rx) + + # Rotate around y-axis + x_prime = x * np.cos(ry) + z_prime * np.sin(ry) + z_prime = -x * np.sin(ry) + z_prime * np.cos(ry) + + # Rotate around z-axis + x_prime = x_prime * np.cos(rz) - y_prime * np.sin(rz) + y_prime = x_prime * np.sin(rz) + y_prime * np.cos(rz) + + return x_prime, y_prime, z_prime + + +def InSpaceR(lmdks):# lmdk short for landmark + lmdk=[] + + angle = (random.randint(-45,45), random.randint(-30,30), random.randint(-30,30)) + tmp = [] + randx = random.uniform(-0.15, 0.15) + randy = random.uniform(-0.15, 0.15) + randz = random.uniform(-0.15, 0.15) + + randscale = random.uniform(0.95, 1.05) + + for lmdk in lmdks: + #Defining a list for hand landmarks + hands = lmdk[:126] + hpoints = np.array_split(hands, 42) + + #Defining a list for pose landmarks + pose = lmdk[-132:] + ppoints = np.array_split(pose, 33) + + finalpoint = [] + # Rotating, moving and scaling each hand point + for point in hpoints: + x, y, z = rotate_point(point, angle) + finalpoint.append(randscale*x + randx) + finalpoint.append(randscale*y + randy) + finalpoint.append(randscale*z + randz) + + # Rotating, moving and scaling each pose point + for point in ppoints: + x,y,z = rotate_point(point[:3], angle) + finalpoint.append(randscale*x + randx) + finalpoint.append(randscale*y + randy) + finalpoint.append(randscale*z + randz) + # Each pose point contains an aditional value regarding it's visibility + finalpoint.append(point[-1:]) + + #Saving the results in a list + tmp.append(finalpoint) + return(np.asfarray(tmp)) + + +# Importing data from dataset +sequences, labels = [], [] +for sign in signs: + print('Importing data for {}...'.format(sign)) + + dirs = os.listdir('Dataset/' + sign) + impframe= False + + for i in range(230): + window = [] + window_aug = [] + + for frame_num in range(sequence_length): + res = np.load(os.path.join(DATA_PATH, sign, str( + i), "{}.npy".format(frame_num))) + + if impframe is True: + window.append(res) + window_aug.append(res) + impframe= False + + else: + impframe= True + prevres = res + + # Randomly performing FastTrack Plus in a copy of res + # Used for data augmentation + randposs= random.randint(1, 2) + if randposs==2: + for i in range(round(12 * random.randrange(4,6)* 0.1)): + rand = random.randint(1, 12-2) + window_aug[rand] = np.divide(np.add(window[rand],window[rand+1]),2) + for i in range(2): + sequences.append(InSpaceR(window_aug)) + labels.append(label_map[sign]) + + sequences.append(window_aug) + labels.append(label_map[sign]) + + for i in range(12): + sequences.append(InSpaceR(window)) + labels.append(label_map[sign]) + + sequences.append(window) + labels.append(label_map[sign]) + + + print('Data for {} imported \n'.format(sign)) + +X = np.array(sequences) +y = to_categorical(labels).astype(int) + +sequences = 0 +labels = 0 + +log_dir = os.path.join('Insights') + +# Splitting dataset into Train_Set and Test_set +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) + +# Setting up model parameters +model = Sequential() +model.add(LSTM(64, return_sequences=True, + activation='relu', input_shape=(12, 258))) +model.add(LSTM(128, return_sequences=True, activation='relu')) +model.add(LSTM(64, return_sequences=False, activation='relu')) +model.add(Dense(64, activation='relu')) +model.add(Dense(32, activation='relu')) +model.add(Dense(signs.shape[0], activation='softmax')) + + +AutoTrain = model.compile(optimizer='Adam', loss='categorical_crossentropy') + +ModelAvailable = False + +AutoTrain = model.fit(X_train, y_train, epochs=5) + +for i in range(150): + if AutoTrain.history['loss'][-1] >= 0.03: + AutoTrain = model.fit(X_train, y_train, epochs=1) + if AutoTrain.history['loss'][-1] == min(AutoTrain.history['loss']) : + model.save(MODEL_PATH) + print('model saved') + ModelAvailable = True + elif ModelAvailable: + model.load_weights(MODEL_PATH) + print('model loaded') + + +ModelPack(MODEL_PATH, signs) diff --git a/tests/essentials.py b/experimental/essentials.py similarity index 97% rename from tests/essentials.py rename to experimental/essentials.py index 4b900e6cf664595a7e6e4baf1132b734e5303cd7..87ffe6c1694d9ba65c3216c40884be45f7178338 100644 --- a/tests/essentials.py +++ b/experimental/essentials.py @@ -12,6 +12,8 @@ phrases = {('how you'): 'how are you', ('fine'): "I'm fine", ('me fine me'): "I am fine", ('good.by.e'): "goodbye", + ("I'm i'm fine, thank you."): "I'm fine, thank you!", + ("I'm i'm fine"): "I'm fine", ('Good.by.e'): "goodbye"} diff --git a/experimental/inSpace Engine.py b/experimental/inSpace Engine.py new file mode 100644 index 0000000000000000000000000000000000000000..57bebb4990f68374bb1ced3d7b36dfbb46546832 --- /dev/null +++ b/experimental/inSpace Engine.py @@ -0,0 +1,56 @@ +import numpy as np +import matplotlib.pyplot as plt + +landmarks = np.load('TestPose.npy') +hands = landmarks[:126] +pose = landmarks[-132:] + +def InSpace(point, angles): + x, y, z = point + rx, ry, rz = np.radians(angles) + + # Rotate around x-axis + y_prime = y * np.cos(rx) - z * np.sin(rx) + z_prime = y * np.sin(rx) + z * np.cos(rx) + + # Rotate around y-axis + x_prime = x * np.cos(ry) + z_prime * np.sin(ry) + z_prime = -x * np.sin(ry) + z_prime * np.cos(ry) + + # Rotate around z-axis + x_prime = x_prime * np.cos(rz) - y_prime * np.sin(rz) + y_prime = x_prime * np.sin(rz) + y_prime * np.cos(rz) + + return x_prime, y_prime, z_prime + +# Example usage +hpoints = np.array_split(hands, 42) +ppoints = np.array_split(pose, 33) +print(hpoints) +angle = (2, 0, 0) + + +plt.rcParams["figure.figsize"] = [10, 10] +plt.rcParams["figure.autolayout"] = True +fig = plt.figure() +ax = fig.add_subplot(projection="3d") +for i in range(0,20,20): + angle = (0, -90, 0) + for point in hpoints: + x, y, z = InSpace(point, angle) + ax.scatter(x, y, z, c='red', s=10) + for point in ppoints: + print(point[:4]) + x, y, z = InSpace(point[:3], angle) + ax.scatter(x, y, z, c='red', s=10) + +for point in hpoints: + x,y,z = point + ax.scatter(x, y, z, c='blue', s=10) +for point in ppoints: + x,y,z=(point[:3]) + ax.scatter(x, y, z, c='blue', s=10) + +x, y, z = (0,0,0) +ax.scatter(x, y, z, c='purple', s=10) +plt.show() diff --git a/model.SignTrack b/model.SignTrack index 3e62216fe1b9cd8e7cab0f71e74b8b683b9cc49a..be529b86dda40b9c13335f60041ed69e9c9c4b6f 100644 Binary files a/model.SignTrack and b/model.SignTrack differ diff --git a/poetry.lock b/poetry.lock index cfabec5bdb808eff680856fdcc38eac58cb549ff..c65a71407eb9a7df69adfa1a9851d7c62c5ac68b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -379,7 +379,7 @@ setuptools_scm = ">=4" [[package]] name = "mediapipe" -version = "0.8.9.1" +version = "0.8.11" description = "MediaPipe is the simplest way for researchers and developers to build world-class ML solutions and applications for mobile, edge, cloud and the web." category = "main" optional = false @@ -391,7 +391,7 @@ attrs = ">=19.1.0" matplotlib = "*" numpy = "*" opencv-contrib-python = "*" -protobuf = ">=3.11.4" +protobuf = ">=3.11,<4" [[package]] name = "more-itertools" @@ -448,6 +448,36 @@ numpy = [ {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, ] +[[package]] +name = "opencv-contrib-python" +version = "4.6.0.66" +description = "Wrapper package for OpenCV python bindings." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +numpy = [ + {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""}, + {version = ">=1.14.5", markers = "python_version >= \"3.7\""}, + {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, +] + +[[package]] +name = "opencv-contrib-python" +version = "4.7.0.72" +description = "Wrapper package for OpenCV python bindings." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +numpy = [ + {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""}, + {version = ">=1.17.0", markers = "python_version >= \"3.7\""}, + {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, +] + [[package]] name = "opencv-python" version = "4.1.2.30" @@ -539,6 +569,17 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pyarrow" +version = "12.0.1" +description = "Python library for Apache Arrow" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.16.6" + [[package]] name = "pyasn1" version = "0.4.8" @@ -1035,7 +1076,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "ee3e416ae99b88ae139ea5598e58dd9943413328404e0ab375ce97e9208c44be" +content-hash = "7a77362474ffe79162c94861c46855d2991493337a3e8de8f9af2d635d2dca11" [metadata.files] absl-py = [ @@ -1054,61 +1095,29 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] -autopep8 = [ - {file = "autopep8-1.6.0-py2.py3-none-any.whl", hash = "sha256:ed77137193bbac52d029a52c59bec1b0629b5a186c495f1eb21b126ac466083f"}, - {file = "autopep8-1.6.0.tar.gz", hash = "sha256:44f0932855039d2c15c4510d6df665e4730f2b8582704fa48f9c55bd3e17d979"}, -] +autopep8 = [] cached-property = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, ] -cachetools = [ - {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, - {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, -] -certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"}, - {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, -] -click = [ - {file = "click-8.1.0-py3-none-any.whl", hash = "sha256:19a4baa64da924c5e0cd889aba8e947f280309f1a2ce0947a3e3a7bcb7cc72d6"}, - {file = "click-8.1.0.tar.gz", hash = "sha256:977c213473c7665d3aa092b41ff12063227751c41d7b17165013e10069cc5cd2"}, -] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] -cvzone = [ - {file = "cvzone-1.5.6.tar.gz", hash = "sha256:d6fddfc42c0033db1478f6f4ecc8cef91d51202588eaa2fd96e236202ed64242"}, -] -cycler = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, -] -filelock = [ - {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, - {file = "filelock-3.6.0.tar.gz", hash = "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85"}, -] +cachetools = [] +certifi = [] +charset-normalizer = [] +click = [] +colorama = [] +cvzone = [] +cycler = [] +filelock = [] flatbuffers = [ {file = "flatbuffers-1.12-py2.py3-none-any.whl", hash = "sha256:9e9ef47fa92625c4721036e7c4124182668dc6021d9e7c73704edd395648deb9"}, {file = "flatbuffers-1.12.tar.gz", hash = "sha256:63bb9a722d5e373701913e226135b28a6f6ac200d5cc7b4d919fa38d73b44610"}, ] -fonttools = [ - {file = "fonttools-4.28.5-py3-none-any.whl", hash = "sha256:edf251d5d2cc0580d5f72de4621c338d8c66c5f61abb50cf486640f73c8194d5"}, - {file = "fonttools-4.28.5.zip", hash = "sha256:545c05d0f7903a863c2020e07b8f0a57517f2c40d940bded77076397872d14ca"}, -] +fonttools = [] gast = [ {file = "gast-0.4.0-py3-none-any.whl", hash = "sha256:b7adcdd5adbebf1adf17378da5ba3f543684dbec47b1cda1f3997e573cd542c4"}, {file = "gast-0.4.0.tar.gz", hash = "sha256:40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1"}, ] -google-auth = [ - {file = "google-auth-2.4.0.tar.gz", hash = "sha256:ef6f4827f6a3f9c5ff884616e2ba779acb5d690486fb70ca5e3091ed85ad932a"}, - {file = "google_auth-2.4.0-py2.py3-none-any.whl", hash = "sha256:d1fad279d9d97e7d6b4a09a53e851ab2ee6d36d5c19547354a3f47a8a6ae41b9"}, -] +google-auth = [] google-auth-oauthlib = [ {file = "google-auth-oauthlib-0.4.6.tar.gz", hash = "sha256:a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a"}, {file = "google_auth_oauthlib-0.4.6-py2.py3-none-any.whl", hash = "sha256:3f2a6e802eebbb6fb736a370fbf3b055edcb6b52878bf2f26330b5e041316c73"}, @@ -1181,22 +1190,13 @@ h5py = [ {file = "h5py-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:1cdfd1c5449ca1329d152f0b66830e93226ebce4f5e07dd8dc16bfc2b1a49d7b"}, {file = "h5py-3.1.0.tar.gz", hash = "sha256:1e2516f190652beedcb8c7acfa1c6fa92d99b42331cbef5e5c7ec2d65b0fc3c2"}, ] -huggingface-hub = [ - {file = "huggingface_hub-0.4.0-py3-none-any.whl", hash = "sha256:808021af1ce1111104973ae54d81738eaf40be6d1e82fc6bdedb82f81c6206e7"}, - {file = "huggingface_hub-0.4.0.tar.gz", hash = "sha256:f0e3389f8988eb7781b17de520ae7fd0aa50d9823534e3ae55344d943a88ac87"}, -] +huggingface-hub = [] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] -importlib-metadata = [ - {file = "importlib_metadata-4.10.1-py3-none-any.whl", hash = "sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6"}, - {file = "importlib_metadata-4.10.1.tar.gz", hash = "sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e"}, -] -joblib = [ - {file = "joblib-1.1.0-py2.py3-none-any.whl", hash = "sha256:f21f109b3c7ff9d95f8387f752d0d9c34a02aa2f7060c2135f465da0e5160ff6"}, - {file = "joblib-1.1.0.tar.gz", hash = "sha256:4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35"}, -] +importlib-metadata = [] +joblib = [] keras-nightly = [ {file = "keras_nightly-2.5.0.dev2021032900-py2.py3-none-any.whl", hash = "sha256:6ba70f738f4008222de7e7fdd5b2b18c48c49b897a9fca54c844854e25964011"}, ] @@ -1204,111 +1204,11 @@ keras-preprocessing = [ {file = "Keras_Preprocessing-1.1.2-py2.py3-none-any.whl", hash = "sha256:7b82029b130ff61cc99b55f3bd27427df4838576838c5b2f65940e4fcec99a7b"}, {file = "Keras_Preprocessing-1.1.2.tar.gz", hash = "sha256:add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3"}, ] -kiwisolver = [ - {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1d819553730d3c2724582124aee8a03c846ec4362ded1034c16fb3ef309264e6"}, - {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8d93a1095f83e908fc253f2fb569c2711414c0bfd451cab580466465b235b470"}, - {file = "kiwisolver-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4550a359c5157aaf8507e6820d98682872b9100ce7607f8aa070b4b8af6c298"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2210f28778c7d2ee13f3c2a20a3a22db889e75f4ec13a21072eabb5693801e84"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:82f49c5a79d3839bc8f38cb5f4bfc87e15f04cbafa5fbd12fb32c941cb529cfb"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9661a04ca3c950a8ac8c47f53cbc0b530bce1b52f516a1e87b7736fec24bfff0"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ddb500a2808c100e72c075cbb00bf32e62763c82b6a882d403f01a119e3f402"}, - {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72be6ebb4e92520b9726d7146bc9c9b277513a57a38efcf66db0620aec0097e0"}, - {file = "kiwisolver-1.3.2-cp310-cp310-win32.whl", hash = "sha256:83d2c9db5dfc537d0171e32de160461230eb14663299b7e6d18ca6dca21e4977"}, - {file = "kiwisolver-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:cba430db673c29376135e695c6e2501c44c256a81495da849e85d1793ee975ad"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4116ba9a58109ed5e4cb315bdcbff9838f3159d099ba5259c7c7fb77f8537492"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19554bd8d54cf41139f376753af1a644b63c9ca93f8f72009d50a2080f870f77"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a4cf5bbdc861987a7745aed7a536c6405256853c94abc9f3287c3fa401b174"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0007840186bacfaa0aba4466d5890334ea5938e0bb7e28078a0eb0e63b5b59d5"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec2eba188c1906b05b9b49ae55aae4efd8150c61ba450e6721f64620c50b59eb"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3dbb3cea20b4af4f49f84cffaf45dd5f88e8594d18568e0225e6ad9dec0e7967"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:5326ddfacbe51abf9469fe668944bc2e399181a2158cb5d45e1d40856b2a0589"}, - {file = "kiwisolver-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c6572c2dab23c86a14e82c245473d45b4c515314f1f859e92608dcafbd2f19b8"}, - {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b5074fb09429f2b7bc82b6fb4be8645dcbac14e592128beeff5461dcde0af09f"}, - {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:22521219ca739654a296eea6d4367703558fba16f98688bd8ce65abff36eaa84"}, - {file = "kiwisolver-1.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c358721aebd40c243894298f685a19eb0491a5c3e0b923b9f887ef1193ddf829"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ba5a1041480c6e0a8b11a9544d53562abc2d19220bfa14133e0cdd9967e97af"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44e6adf67577dbdfa2d9f06db9fbc5639afefdb5bf2b4dfec25c3a7fbc619536"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d45d1c74f88b9f41062716c727f78f2a59a5476ecbe74956fafb423c5c87a76"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70adc3658138bc77a36ce769f5f183169bc0a2906a4f61f09673f7181255ac9b"}, - {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6a5431940f28b6de123de42f0eb47b84a073ee3c3345dc109ad550a3307dd28"}, - {file = "kiwisolver-1.3.2-cp38-cp38-win32.whl", hash = "sha256:ee040a7de8d295dbd261ef2d6d3192f13e2b08ec4a954de34a6fb8ff6422e24c"}, - {file = "kiwisolver-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8dc3d842fa41a33fe83d9f5c66c0cc1f28756530cd89944b63b072281e852031"}, - {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a498bcd005e8a3fedd0022bb30ee0ad92728154a8798b703f394484452550507"}, - {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80efd202108c3a4150e042b269f7c78643420cc232a0a771743bb96b742f838f"}, - {file = "kiwisolver-1.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f8eb7b6716f5b50e9c06207a14172cf2de201e41912ebe732846c02c830455b9"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f441422bb313ab25de7b3dbfd388e790eceb76ce01a18199ec4944b369017009"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30fa008c172355c7768159983a7270cb23838c4d7db73d6c0f6b60dde0d432c6"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f8f6c8f4f1cff93ca5058d6ec5f0efda922ecb3f4c5fb76181f327decff98b8"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba677bcaff9429fd1bf01648ad0901cea56c0d068df383d5f5856d88221fe75b"}, - {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7843b1624d6ccca403a610d1277f7c28ad184c5aa88a1750c1a999754e65b439"}, - {file = "kiwisolver-1.3.2-cp39-cp39-win32.whl", hash = "sha256:e6f5eb2f53fac7d408a45fbcdeda7224b1cfff64919d0f95473420a931347ae9"}, - {file = "kiwisolver-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:eedd3b59190885d1ebdf6c5e0ca56828beb1949b4dfe6e5d0256a461429ac386"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dedc71c8eb9c5096037766390172c34fb86ef048b8e8958b4e484b9e505d66bc"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bf7eb45d14fc036514c09554bf983f2a72323254912ed0c3c8e697b62c4c158f"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b65bd35f3e06a47b5c30ea99e0c2b88f72c6476eedaf8cfbc8e66adb5479dcf"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25405f88a37c5f5bcba01c6e350086d65e7465fd1caaf986333d2a045045a223"}, - {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:bcadb05c3d4794eb9eee1dddf1c24215c92fb7b55a80beae7a60530a91060560"}, - {file = "kiwisolver-1.3.2.tar.gz", hash = "sha256:fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c"}, -] -markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, -] -matplotlib = [ - {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:456cc8334f6d1124e8ff856b42d2cc1c84335375a16448189999496549f7182b"}, - {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8a77906dc2ef9b67407cec0bdbf08e3971141e535db888974a915be5e1e3efc6"}, - {file = "matplotlib-3.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e70ae6475cfd0fad3816dcbf6cac536dc6f100f7474be58d59fa306e6e768a4"}, - {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53273c5487d1c19c3bc03b9eb82adaf8456f243b97ed79d09dded747abaf1235"}, - {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3b6f3fd0d8ca37861c31e9a7cab71a0ef14c639b4c95654ea1dd153158bf0df"}, - {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8c87cdaf06fd7b2477f68909838ff4176f105064a72ca9d24d3f2a29f73d393"}, - {file = "matplotlib-3.5.1-cp310-cp310-win32.whl", hash = "sha256:e2f28a07b4f82abb40267864ad7b3a4ed76f1b1663e81c7efc84a9b9248f672f"}, - {file = "matplotlib-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:d70a32ee1f8b55eed3fd4e892f0286df8cccc7e0475c11d33b5d0a148f5c7599"}, - {file = "matplotlib-3.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:68fa30cec89b6139dc559ed6ef226c53fd80396da1919a1b5ef672c911aaa767"}, - {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3484d8455af3fdb0424eae1789af61f6a79da0c80079125112fd5c1b604218"}, - {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e293b16cf303fe82995e41700d172a58a15efc5331125d08246b520843ef21ee"}, - {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e3520a274a0e054e919f5b3279ee5dbccf5311833819ccf3399dab7c83e90a25"}, - {file = "matplotlib-3.5.1-cp37-cp37m-win32.whl", hash = "sha256:2252bfac85cec7af4a67e494bfccf9080bcba8a0299701eab075f48847cca907"}, - {file = "matplotlib-3.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf67e05a1b7f86583f6ebd01f69b693b9c535276f4e943292e444855870a1b8"}, - {file = "matplotlib-3.5.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6c094e4bfecd2fa7f9adffd03d8abceed7157c928c2976899de282f3600f0a3d"}, - {file = "matplotlib-3.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:506b210cc6e66a0d1c2bb765d055f4f6bc2745070fb1129203b67e85bbfa5c18"}, - {file = "matplotlib-3.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b04fc29bcef04d4e2d626af28d9d892be6aba94856cb46ed52bcb219ceac8943"}, - {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:577ed20ec9a18d6bdedb4616f5e9e957b4c08563a9f985563a31fd5b10564d2a"}, - {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e486f60db0cd1c8d68464d9484fd2a94011c1ac8593d765d0211f9daba2bd535"}, - {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b71f3a7ca935fc759f2aed7cec06cfe10bc3100fadb5dbd9c435b04e557971e1"}, - {file = "matplotlib-3.5.1-cp38-cp38-win32.whl", hash = "sha256:d24e5bb8028541ce25e59390122f5e48c8506b7e35587e5135efcb6471b4ac6c"}, - {file = "matplotlib-3.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:778d398c4866d8e36ee3bf833779c940b5f57192fa0a549b3ad67bc4c822771b"}, - {file = "matplotlib-3.5.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bb1c613908f11bac270bc7494d68b1ef6e7c224b7a4204d5dacf3522a41e2bc3"}, - {file = "matplotlib-3.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:edf5e4e1d5fb22c18820e8586fb867455de3b109c309cb4fce3aaed85d9468d1"}, - {file = "matplotlib-3.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:40e0d7df05e8efe60397c69b467fc8f87a2affeb4d562fe92b72ff8937a2b511"}, - {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a350ca685d9f594123f652ba796ee37219bf72c8e0fc4b471473d87121d6d34"}, - {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3e66497cd990b1a130e21919b004da2f1dc112132c01ac78011a90a0f9229778"}, - {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:87900c67c0f1728e6db17c6809ec05c025c6624dcf96a8020326ea15378fe8e7"}, - {file = "matplotlib-3.5.1-cp39-cp39-win32.whl", hash = "sha256:b8a4fb2a0c5afbe9604f8a91d7d0f27b1832c3e0b5e365f95a13015822b4cd65"}, - {file = "matplotlib-3.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:fe8d40c434a8e2c68d64c6d6a04e77f21791a93ff6afe0dce169597c110d3079"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34a1fc29f8f96e78ec57a5eff5e8d8b53d3298c3be6df61e7aa9efba26929522"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b19a761b948e939a9e20173aaae76070025f0024fc8f7ba08bef22a5c8573afc"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6803299cbf4665eca14428d9e886de62e24f4223ac31ab9c5d6d5339a39782c7"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14334b9902ec776461c4b8c6516e26b450f7ebe0b3ef8703bf5cdfbbaecf774a"}, - {file = "matplotlib-3.5.1.tar.gz", hash = "sha256:b2e9810e09c3a47b73ce9cab5a72243a1258f61e7900969097a817232246ce1c"}, -] -mediapipe = [ - {file = "mediapipe-0.8.9.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:5725d5b5393c966d11d3a5346e385e3f3a75b0ed7fb437feb1cbed8592a0ceed"}, - {file = "mediapipe-0.8.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cb270484071c7a8469b8107727a42696932fa9d8b8e9dcfe04ab8268bdc4bef"}, - {file = "mediapipe-0.8.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:6b34c83519bfaba787dd1914e0933b1ec2c4be340f8f99b21ccd989ca6227d8d"}, - {file = "mediapipe-0.8.9.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:36b38ac6d08684c7cdaa495a0bdc4002bb19e21bd38b0631999c6f219cac7861"}, - {file = "mediapipe-0.8.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8228dde9f347a8b979a785d4f02ced23adcec004856161465836741e79a96f1"}, - {file = "mediapipe-0.8.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97550e319484f22dbf68dcaf40288fe6eadd270657e5c87579e0cc347ec5a589"}, - {file = "mediapipe-0.8.9.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4d10fffc5effe53f125bb587a6425ff981aae9d25876842e10d531fb52ed21db"}, - {file = "mediapipe-0.8.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d9d36808e4b15d8b5c6a96d7b304f237e45118f0969efef1427a0ac3de8254"}, - {file = "mediapipe-0.8.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:36f48347067b1684012e991412336262cba7899c427b234c8eea495d883698e0"}, - {file = "mediapipe-0.8.9.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:e7a370faa2cd2907c3aa3351fea284b776e16aafd24f1069d4c261b0b3bd367f"}, - {file = "mediapipe-0.8.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:319c727ef2fd633ba47d702fdfc610304a16f87c649be63730a9d3e7f015100c"}, - {file = "mediapipe-0.8.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c35fc14b22a0dbe1bf4ceffe8dc8c2fb94896130e98df0e3d15fd956e973641"}, -] -more-itertools = [ - {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, - {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, -] +kiwisolver = [] +markdown = [] +matplotlib = [] +mediapipe = [] +more-itertools = [] numpy = [ {file = "numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff"}, {file = "numpy-1.19.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea"}, @@ -1345,67 +1245,9 @@ numpy = [ {file = "numpy-1.19.5-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73"}, {file = "numpy-1.19.5.zip", hash = "sha256:a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4"}, ] -oauthlib = [ - {file = "oauthlib-3.1.1-py2.py3-none-any.whl", hash = "sha256:42bf6354c2ed8c6acb54d971fce6f88193d97297e18602a3a886603f9d7730cc"}, - {file = "oauthlib-3.1.1.tar.gz", hash = "sha256:8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3"}, -] -opencv-contrib-python = [ - {file = "opencv_contrib_python-4.5.2.54-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:e69c421ead33c6b3b9d54b9f80b2d9dee7c6a0415430394ccdcf7cfbacfabc05"}, - {file = "opencv_contrib_python-4.5.2.54-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:02dc1068477420b76d27d649e5de16d7000012ed54819f9fc89ca7f97543a03a"}, - {file = "opencv_contrib_python-4.5.2.54-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:c1247971ea9f223c70ae1c593e27aa50d2657ab17d2ed133d8e3af4feb59059e"}, - {file = "opencv_contrib_python-4.5.2.54-cp36-cp36m-win32.whl", hash = "sha256:4f780d41dc99c4cafc1efb1b87a272b847b46d4f66218bfd8c0a5309ba7a7819"}, - {file = "opencv_contrib_python-4.5.2.54-cp36-cp36m-win_amd64.whl", hash = "sha256:482d1d2eca42d6f16760e3cd41e2cfefc1b326c1b533ecafefa3494595a9f4c6"}, - {file = "opencv_contrib_python-4.5.2.54-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:1811b312ed7bd4918275e70ac1656a83d463ab51b4ca16521190d87657d85d87"}, - {file = "opencv_contrib_python-4.5.2.54-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:80d3217943562546a57d08b5dd984a2e470f86a1eecc2e2a6b589fc93d2bd2a3"}, - {file = "opencv_contrib_python-4.5.2.54-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:baf52a39455e477465bd3afda45c850b2d78c18aaf9dd1324c9912b6613d56cd"}, - {file = "opencv_contrib_python-4.5.2.54-cp37-cp37m-win32.whl", hash = "sha256:dececde5e9b2768807ae6021c15981da83c5d9ea25b9208df38049779e600687"}, - {file = "opencv_contrib_python-4.5.2.54-cp37-cp37m-win_amd64.whl", hash = "sha256:dfb398d58020522696864c32deebd6c45b3d0d4fbf1cfce319705d142330268c"}, - {file = "opencv_contrib_python-4.5.2.54-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:bb90c814a3a22a85ae2b5708dc5fa57edba90d9aef30246867087f4920a80a0f"}, - {file = "opencv_contrib_python-4.5.2.54-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8e551ae056e9b66151a314e18f40579b029bb822cc17c1b848d065cef5c54ffe"}, - {file = "opencv_contrib_python-4.5.2.54-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:9ea70355894c9897d194db3e80c109c9a674106b1c0270256c5d7e0811f71ef8"}, - {file = "opencv_contrib_python-4.5.2.54-cp38-cp38-win32.whl", hash = "sha256:91e0e87cdbecf64f869d2b6a0822f911cb27e8f2ad34a124c7647aa6c59ef3d6"}, - {file = "opencv_contrib_python-4.5.2.54-cp38-cp38-win_amd64.whl", hash = "sha256:0528b07538810dcf2ca9fc68f845c63d6acdb9232e52165baa1cd202672dee39"}, - {file = "opencv_contrib_python-4.5.2.54-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:e993b5f292f09714176839c829997bc0c86d757a6055e99199f7746f08bf3029"}, - {file = "opencv_contrib_python-4.5.2.54-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:023477356304603b88685d360d92b6d32fda6ae35d8070406d04a978dca8df49"}, - {file = "opencv_contrib_python-4.5.2.54-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:40c282c2ab795122ee04ef05dd566aace99799b5ce974999075bfb23d2d67cc3"}, - {file = "opencv_contrib_python-4.5.2.54-cp39-cp39-win32.whl", hash = "sha256:0d12cb62e8494c2e215d6b8f6867f9b0c67b450d071a107803c8ffd6d55efd8c"}, - {file = "opencv_contrib_python-4.5.2.54-cp39-cp39-win_amd64.whl", hash = "sha256:b6ef54585322f66c6300230224308736fb5381c381bee2228d16914e0f370e3a"}, - {file = "opencv-contrib-python-4.5.5.64.tar.gz", hash = "sha256:c4ff7cb9c856af521982b54602707a61f8dae8cc28f5949bf1e3d0453d08a9f0"}, - {file = "opencv_contrib_python-4.5.5.64-cp36-abi3-macosx_10_15_x86_64.whl", hash = "sha256:aff6bcc6d12e664af16be07a583f6a6a637d6e17784bd06abfb07573807a199e"}, - {file = "opencv_contrib_python-4.5.5.64-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4179b78d8c1eb279fcb2cbb41e6cdb3a127ae5d96c39241ef88dab3382e56da1"}, - {file = "opencv_contrib_python-4.5.5.64-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4544b8b03dc50fea42f67013cdff5b74a326f7631616055c2a2e998fef652e0f"}, - {file = "opencv_contrib_python-4.5.5.64-cp36-abi3-win32.whl", hash = "sha256:8381ab5952724719c982e4b8061fbda9ceae5b01f3e2a32beec30b5dd9f74f3f"}, - {file = "opencv_contrib_python-4.5.5.64-cp36-abi3-win_amd64.whl", hash = "sha256:fc2aa1f3abb564832c1bc289b1d83f491dd249e640b78a30e9cc1831ebbf4410"}, - {file = "opencv_contrib_python-4.5.5.64-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:b54c750ad88eba0e35b09c9286d6d2a1be8d8a6925b1d7e1e487df2396e74397"}, -] -opencv-python = [ - {file = "opencv_python-4.1.2.30-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1a2d1801c038f055852bd2379186ca8b19b4ea24afb0b8410293bc802211579b"}, - {file = "opencv_python-4.1.2.30-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e793df2e12093b3a01006b5b27f321e306193c7a5c9e2a6c8bf652e1ad2d6a86"}, - {file = "opencv_python-4.1.2.30-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:ce7b1f25be04b04f2e678b2bf23a975137f77406dcee66a88a2daeb77cda3e76"}, - {file = "opencv_python-4.1.2.30-cp27-cp27m-win32.whl", hash = "sha256:6c32d36f52a6e0c02d1ab0bb95223cb4dd5525a7e8292a747116126b3d34c578"}, - {file = "opencv_python-4.1.2.30-cp27-cp27m-win_amd64.whl", hash = "sha256:22c2ee5f97f85903bfb28c056566b2ecaa1d2f804b880ab39ebf94528a402992"}, - {file = "opencv_python-4.1.2.30-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:04bec0a6d3a00360a7fb769b755ff4489a4ac8291821b785151f63e6d8bb59ea"}, - {file = "opencv_python-4.1.2.30-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:25127990671dc8bd27ae8b880d7a39f9aae863052a8fbebe8977c6ce8e5fc0c9"}, - {file = "opencv_python-4.1.2.30-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73a467a78ffd902d2c0265ab6b2e2cdda423d61b3d08685e0c7d0b4572142ff1"}, - {file = "opencv_python-4.1.2.30-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:76de8a247970d150b1672c6646cda91217d562682e713721fc9b9bf1434553c4"}, - {file = "opencv_python-4.1.2.30-cp35-cp35m-win32.whl", hash = "sha256:e6fc00ac42c800fad5fb3927cfb9bf4e60bb3302cb9805f45b826d5d2546119a"}, - {file = "opencv_python-4.1.2.30-cp35-cp35m-win_amd64.whl", hash = "sha256:3cef82b6a1f748d2f4527f5932a86d54ebd10bd89f6cf59b003c36b1015055f7"}, - {file = "opencv_python-4.1.2.30-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f2cf5a0ab244a0a1dbe5ec426c277b55e06ac6a472ad61be77ef643a238cbd3"}, - {file = "opencv_python-4.1.2.30-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:982d4e80c14356098cde57a6c7d18fe0928a1c3118675bac2252ef38f152e1ab"}, - {file = "opencv_python-4.1.2.30-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:919d5c3ec1a62258ba8c68b869b1056186e2355c4474739b199c295547e66cc1"}, - {file = "opencv_python-4.1.2.30-cp36-cp36m-win32.whl", hash = "sha256:499a0413e7110a934ab56e635252a4c86f8be64de59f94a62318a7b895dc809e"}, - {file = "opencv_python-4.1.2.30-cp36-cp36m-win_amd64.whl", hash = "sha256:1c7d235faef511aca7669f1aa650897b6c058dfde6412ea3fc58feb0fce78814"}, - {file = "opencv_python-4.1.2.30-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8119248457e909dcd7b598621ed1d139419d69377e8cb4e2b2c49c819de287d"}, - {file = "opencv_python-4.1.2.30-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9d025e6bf2989bcbc7744c26d8bd90c2629a92d8de3ba2416f62ce2a94615dd9"}, - {file = "opencv_python-4.1.2.30-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eae543b3e9253ff702103333aabd87736b5ed5e46ab834d8e0b929f08f494dee"}, - {file = "opencv_python-4.1.2.30-cp37-cp37m-win32.whl", hash = "sha256:e2ffa3161b8662112f1880734e8b9549d0c9e818e59f652a9d1c5bf31e36586a"}, - {file = "opencv_python-4.1.2.30-cp37-cp37m-win_amd64.whl", hash = "sha256:6183c9c7fab4590e0651bc941cde780988c3ad9889bd62de19d581a6f59523ea"}, - {file = "opencv_python-4.1.2.30-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bb59f98205cd81e29f45eed043cf0f98531486dc0b3f671c9e06fecf08f7ccef"}, - {file = "opencv_python-4.1.2.30-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d64428bf59ab4d27620b00a2ad6fea2b4d62016a17849c82a7517ec12db97d55"}, - {file = "opencv_python-4.1.2.30-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5fec35916a6b9ce935f2e2806084303fd4e3fbb0c973a8db8f54b5aca54613cb"}, - {file = "opencv_python-4.1.2.30-cp38-cp38-win32.whl", hash = "sha256:67a236db8db84d7fb0f6e127f360ce6669350ef324839132e22879ec90588dab"}, - {file = "opencv_python-4.1.2.30-cp38-cp38-win_amd64.whl", hash = "sha256:f0af656402b73ead2d9f593c2774c04b01e2d0c63e4f99e0dc2f3fde99be22b4"}, -] +oauthlib = [] +opencv-contrib-python = [] +opencv-python = [] opt-einsum = [ {file = "opt_einsum-3.3.0-py3-none-any.whl", hash = "sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147"}, {file = "opt_einsum-3.3.0.tar.gz", hash = "sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549"}, @@ -1414,94 +1256,18 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pandas = [ - {file = "pandas-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8c9ec12c480c4d915e23ee9c8a2d8eba8509986f35f307771045c1294a2e5b73"}, - {file = "pandas-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e4b6c98f45695799990da328e6fd7d6187be32752ed64c2f22326ad66762d179"}, - {file = "pandas-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:16ae070c47474008769fc443ac765ffd88c3506b4a82966e7a605592978896f9"}, - {file = "pandas-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:88930c74f69e97b17703600233c0eaf1f4f4dd10c14633d522724c5c1b963ec4"}, - {file = "pandas-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:fe6f1623376b616e03d51f0dd95afd862cf9a33c18cf55ce0ed4bbe1c4444391"}, - {file = "pandas-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a81c4bf9c59010aa3efddbb6b9fc84a9b76dc0b4da2c2c2d50f06a9ef6ac0004"}, - {file = "pandas-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:1acc2bd7fc95e5408a4456897c2c2a1ae7c6acefe108d90479ab6d98d34fcc3d"}, - {file = "pandas-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:84c101d0f7bbf0d9f1be9a2f29f6fcc12415442558d067164e50a56edfb732b4"}, - {file = "pandas-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:391db82ebeb886143b96b9c6c6166686c9a272d00020e4e39ad63b792542d9e2"}, - {file = "pandas-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0366150fe8ee37ef89a45d3093e05026b5f895e42bbce3902ce3b6427f1b8471"}, - {file = "pandas-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9644ac996149b2a51325d48d77e25c911e01aa6d39dc1b64be679cd71f683ec"}, - {file = "pandas-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:41675323d4fcdd15abde068607cad150dfe17f7d32290ee128e5fea98442bd09"}, - {file = "pandas-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0246c67cbaaaac8d25fed8d4cf2d8897bd858f0e540e8528a75281cee9ac516d"}, - {file = "pandas-1.1.1-cp38-cp38-win32.whl", hash = "sha256:01b1e536eb960822c5e6b58357cad8c4b492a336f4a5630bf0b598566462a578"}, - {file = "pandas-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:57c5f6be49259cde8e6f71c2bf240a26b071569cabc04c751358495d09419e56"}, - {file = "pandas-1.1.1.tar.gz", hash = "sha256:53328284a7bb046e2e885fd1b8c078bd896d7fc4575b915d4936f54984a2ba67"}, -] -pillow = [ - {file = "Pillow-9.0.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:113723312215b25c22df1fdf0e2da7a3b9c357a7d24a93ebbe80bfda4f37a8d4"}, - {file = "Pillow-9.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bb47a548cea95b86494a26c89d153fd31122ed65255db5dcbc421a2d28eb3379"}, - {file = "Pillow-9.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31b265496e603985fad54d52d11970383e317d11e18e856971bdbb86af7242a4"}, - {file = "Pillow-9.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d154ed971a4cc04b93a6d5b47f37948d1f621f25de3e8fa0c26b2d44f24e3e8f"}, - {file = "Pillow-9.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80fe92813d208ce8aa7d76da878bdc84b90809f79ccbad2a288e9bcbeac1d9bd"}, - {file = "Pillow-9.0.0-cp310-cp310-win32.whl", hash = "sha256:d5dcea1387331c905405b09cdbfb34611050cc52c865d71f2362f354faee1e9f"}, - {file = "Pillow-9.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:52abae4c96b5da630a8b4247de5428f593465291e5b239f3f843a911a3cf0105"}, - {file = "Pillow-9.0.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:72c3110228944019e5f27232296c5923398496b28be42535e3b2dc7297b6e8b6"}, - {file = "Pillow-9.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b6d21771da41497b81652d44191489296555b761684f82b7b544c49989110f"}, - {file = "Pillow-9.0.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72f649d93d4cc4d8cf79c91ebc25137c358718ad75f99e99e043325ea7d56100"}, - {file = "Pillow-9.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aaf07085c756f6cb1c692ee0d5a86c531703b6e8c9cae581b31b562c16b98ce"}, - {file = "Pillow-9.0.0-cp37-cp37m-win32.whl", hash = "sha256:03b27b197deb4ee400ed57d8d4e572d2d8d80f825b6634daf6e2c18c3c6ccfa6"}, - {file = "Pillow-9.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a09a9d4ec2b7887f7a088bbaacfd5c07160e746e3d47ec5e8050ae3b2a229e9f"}, - {file = "Pillow-9.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:490e52e99224858f154975db61c060686df8a6b3f0212a678e5d2e2ce24675c9"}, - {file = "Pillow-9.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:500d397ddf4bbf2ca42e198399ac13e7841956c72645513e8ddf243b31ad2128"}, - {file = "Pillow-9.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ebd8b9137630a7bbbff8c4b31e774ff05bbb90f7911d93ea2c9371e41039b52"}, - {file = "Pillow-9.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd0e5062f11cb3e730450a7d9f323f4051b532781026395c4323b8ad055523c4"}, - {file = "Pillow-9.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f3b4522148586d35e78313db4db0df4b759ddd7649ef70002b6c3767d0fdeb7"}, - {file = "Pillow-9.0.0-cp38-cp38-win32.whl", hash = "sha256:0b281fcadbb688607ea6ece7649c5d59d4bbd574e90db6cd030e9e85bde9fecc"}, - {file = "Pillow-9.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:b5050d681bcf5c9f2570b93bee5d3ec8ae4cf23158812f91ed57f7126df91762"}, - {file = "Pillow-9.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c2067b3bb0781f14059b112c9da5a91c80a600a97915b4f48b37f197895dd925"}, - {file = "Pillow-9.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d16b6196fb7a54aff6b5e3ecd00f7c0bab1b56eee39214b2b223a9d938c50af"}, - {file = "Pillow-9.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98cb63ca63cb61f594511c06218ab4394bf80388b3d66cd61d0b1f63ee0ea69f"}, - {file = "Pillow-9.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc462d24500ba707e9cbdef436c16e5c8cbf29908278af053008d9f689f56dee"}, - {file = "Pillow-9.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3586e12d874ce2f1bc875a3ffba98732ebb12e18fb6d97be482bd62b56803281"}, - {file = "Pillow-9.0.0-cp39-cp39-win32.whl", hash = "sha256:68e06f8b2248f6dc8b899c3e7ecf02c9f413aab622f4d6190df53a78b93d97a5"}, - {file = "Pillow-9.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:6579f9ba84a3d4f1807c4aab4be06f373017fc65fff43498885ac50a9b47a553"}, - {file = "Pillow-9.0.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:47f5cf60bcb9fbc46011f75c9b45a8b5ad077ca352a78185bd3e7f1d294b98bb"}, - {file = "Pillow-9.0.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fd8053e1f8ff1844419842fd474fc359676b2e2a2b66b11cc59f4fa0a301315"}, - {file = "Pillow-9.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c5439bfb35a89cac50e81c751317faea647b9a3ec11c039900cd6915831064d"}, - {file = "Pillow-9.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95545137fc56ce8c10de646074d242001a112a92de169986abd8c88c27566a05"}, - {file = "Pillow-9.0.0.tar.gz", hash = "sha256:ee6e2963e92762923956fe5d3479b1fdc3b76c83f290aad131a2f98c3df0593e"}, -] +pandas = [] +pillow = [] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, ] -protobuf = [ - {file = "protobuf-3.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1cb2ed66aac593adbf6dca4f07cd7ee7e2958b17bbc85b2cc8bc564ebeb258ec"}, - {file = "protobuf-3.19.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:898bda9cd37ec0c781b598891e86435de80c3bfa53eb483a9dac5a11ec93e942"}, - {file = "protobuf-3.19.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ad761ef3be34c8bdc7285bec4b40372a8dad9e70cfbdc1793cd3cf4c1a4ce74"}, - {file = "protobuf-3.19.3-cp310-cp310-win32.whl", hash = "sha256:2cddcbcc222f3144765ccccdb35d3621dc1544da57a9aca7e1944c1a4fe3db11"}, - {file = "protobuf-3.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:6202df8ee8457cb00810c6e76ced480f22a1e4e02c899a14e7b6e6e1de09f938"}, - {file = "protobuf-3.19.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:397d82f1c58b76445469c8c06b8dee1ff67b3053639d054f52599a458fac9bc6"}, - {file = "protobuf-3.19.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e54b8650e849ee8e95e481024bff92cf98f5ec61c7650cb838d928a140adcb63"}, - {file = "protobuf-3.19.3-cp36-cp36m-win32.whl", hash = "sha256:3bf3a07d17ba3511fe5fa916afb7351f482ab5dbab5afe71a7a384274a2cd550"}, - {file = "protobuf-3.19.3-cp36-cp36m-win_amd64.whl", hash = "sha256:afa8122de8064fd577f49ae9eef433561c8ace97a0a7b969d56e8b1d39b5d177"}, - {file = "protobuf-3.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18c40a1b8721026a85187640f1786d52407dc9c1ba8ec38accb57a46e84015f6"}, - {file = "protobuf-3.19.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:af7238849fa79285d448a24db686517570099739527a03c9c2971cce99cc5ae2"}, - {file = "protobuf-3.19.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e765e6dfbbb02c55e4d6d1145743401a84fc0b508f5a81b2c5a738cf86353139"}, - {file = "protobuf-3.19.3-cp37-cp37m-win32.whl", hash = "sha256:c781402ed5396ab56358d7b866d78c03a77cbc26ba0598d8bb0ac32084b1a257"}, - {file = "protobuf-3.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:544fe9705189b249380fae07952d220c97f5c6c9372a6f936cc83a79601dcb70"}, - {file = "protobuf-3.19.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:84bf3aa3efb00dbe1c7ed55da0f20800b0662541e582d7e62b3e1464d61ed365"}, - {file = "protobuf-3.19.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3f80a3491eaca767cdd86cb8660dc778f634b44abdb0dffc9b2a8e8d0cd617d0"}, - {file = "protobuf-3.19.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9401d96552befcc7311f5ef8f0fa7dba0ef5fd805466b158b141606cd0ab6a8"}, - {file = "protobuf-3.19.3-cp38-cp38-win32.whl", hash = "sha256:ef02d112c025e83db5d1188a847e358beab3e4bbfbbaf10eaf69e67359af51b2"}, - {file = "protobuf-3.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:1291a0a7db7d792745c99d4657b4c5c4942695c8b1ac1bfb993a34035ec123f7"}, - {file = "protobuf-3.19.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:49677e5e9c7ea1245a90c2e8a00d304598f22ea3aa0628f0e0a530a9e70665fa"}, - {file = "protobuf-3.19.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:df2ba379ee42427e8fcc6a0a76843bff6efb34ef5266b17f95043939b5e25b69"}, - {file = "protobuf-3.19.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2acd7ca329be544d1a603d5f13a4e34a3791c90d651ebaf130ba2e43ae5397c6"}, - {file = "protobuf-3.19.3-cp39-cp39-win32.whl", hash = "sha256:b53519b2ebec70cfe24b4ddda21e9843f0918d7c3627a785393fb35d402ab8ad"}, - {file = "protobuf-3.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:8ceaf5fdb72c8e1fcb7be9f2b3b07482ce058a3548180c0bdd5c7e4ac5e14165"}, - {file = "protobuf-3.19.3-py2.py3-none-any.whl", hash = "sha256:f6d4b5b7595a57e69eb7314c67bef4a3c745b4caf91accaf72913d8e0635111b"}, - {file = "protobuf-3.19.3.tar.gz", hash = "sha256:d975a6314fbf5c524d4981e24294739216b5fb81ef3c14b86fb4b045d6690907"}, -] +protobuf = [] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +pyarrow = [] pyasn1 = [ {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"}, {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"}, @@ -1532,267 +1298,33 @@ pyasn1-modules = [ {file = "pyasn1_modules-0.2.8-py3.6.egg", hash = "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0"}, {file = "pyasn1_modules-0.2.8-py3.7.egg", hash = "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd"}, ] -pycodestyle = [ - {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, - {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, -] -pyparsing = [ - {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, - {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, -] +pycodestyle = [] +pyparsing = [] pytest = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, ] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] -pytz = [ - {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, - {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, -] -pyyaml = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] -regex = [ - {file = "regex-2022.3.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:42eb13b93765c6698a5ab3bcd318d8c39bb42e5fa8a7fcf7d8d98923f3babdb1"}, - {file = "regex-2022.3.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9beb03ff6fe509d6455971c2489dceb31687b38781206bcec8e68bdfcf5f1db2"}, - {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0a5a1fdc9f148a8827d55b05425801acebeeefc9e86065c7ac8b8cc740a91ff"}, - {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb374a2a4dba7c4be0b19dc7b1adc50e6c2c26c3369ac629f50f3c198f3743a4"}, - {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c33ce0c665dd325200209340a88438ba7a470bd5f09f7424e520e1a3ff835b52"}, - {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04c09b9651fa814eeeb38e029dc1ae83149203e4eeb94e52bb868fadf64852bc"}, - {file = "regex-2022.3.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab5d89cfaf71807da93c131bb7a19c3e19eaefd613d14f3bce4e97de830b15df"}, - {file = "regex-2022.3.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e2630ae470d6a9f8e4967388c1eda4762706f5750ecf387785e0df63a4cc5af"}, - {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:df037c01d68d1958dad3463e2881d3638a0d6693483f58ad41001aa53a83fcea"}, - {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:940570c1a305bac10e8b2bc934b85a7709c649317dd16520471e85660275083a"}, - {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7f63877c87552992894ea1444378b9c3a1d80819880ae226bb30b04789c0828c"}, - {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3e265b388cc80c7c9c01bb4f26c9e536c40b2c05b7231fbb347381a2e1c8bf43"}, - {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:058054c7a54428d5c3e3739ac1e363dc9347d15e64833817797dc4f01fb94bb8"}, - {file = "regex-2022.3.15-cp310-cp310-win32.whl", hash = "sha256:76435a92e444e5b8f346aed76801db1c1e5176c4c7e17daba074fbb46cb8d783"}, - {file = "regex-2022.3.15-cp310-cp310-win_amd64.whl", hash = "sha256:174d964bc683b1e8b0970e1325f75e6242786a92a22cedb2a6ec3e4ae25358bd"}, - {file = "regex-2022.3.15-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6e1d8ed9e61f37881c8db383a124829a6e8114a69bd3377a25aecaeb9b3538f8"}, - {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b52771f05cff7517f7067fef19ffe545b1f05959e440d42247a17cd9bddae11b"}, - {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:673f5a393d603c34477dbad70db30025ccd23996a2d0916e942aac91cc42b31a"}, - {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8923e1c5231549fee78ff9b2914fad25f2e3517572bb34bfaa3aea682a758683"}, - {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764e66a0e382829f6ad3bbce0987153080a511c19eb3d2f8ead3f766d14433ac"}, - {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd00859291658fe1fda48a99559fb34da891c50385b0bfb35b808f98956ef1e7"}, - {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa2ce79f3889720b46e0aaba338148a1069aea55fda2c29e0626b4db20d9fcb7"}, - {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:34bb30c095342797608727baf5c8aa122406aa5edfa12107b8e08eb432d4c5d7"}, - {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:25ecb1dffc5e409ca42f01a2b2437f93024ff1612c1e7983bad9ee191a5e8828"}, - {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:aa5eedfc2461c16a092a2fabc5895f159915f25731740c9152a1b00f4bcf629a"}, - {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:7d1a6e403ac8f1d91d8f51c441c3f99367488ed822bda2b40836690d5d0059f5"}, - {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:3e4d710ff6539026e49f15a3797c6b1053573c2b65210373ef0eec24480b900b"}, - {file = "regex-2022.3.15-cp36-cp36m-win32.whl", hash = "sha256:0100f0ded953b6b17f18207907159ba9be3159649ad2d9b15535a74de70359d3"}, - {file = "regex-2022.3.15-cp36-cp36m-win_amd64.whl", hash = "sha256:f320c070dea3f20c11213e56dbbd7294c05743417cde01392148964b7bc2d31a"}, - {file = "regex-2022.3.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fc8c7958d14e8270171b3d72792b609c057ec0fa17d507729835b5cff6b7f69a"}, - {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ca6dcd17f537e9f3793cdde20ac6076af51b2bd8ad5fe69fa54373b17b48d3c"}, - {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0214ff6dff1b5a4b4740cfe6e47f2c4c92ba2938fca7abbea1359036305c132f"}, - {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a98ae493e4e80b3ded6503ff087a8492db058e9c68de371ac3df78e88360b374"}, - {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b1cc70e31aacc152a12b39245974c8fccf313187eead559ee5966d50e1b5817"}, - {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4829db3737480a9d5bfb1c0320c4ee13736f555f53a056aacc874f140e98f64"}, - {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:303b15a3d32bf5fe5a73288c316bac5807587f193ceee4eb6d96ee38663789fa"}, - {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:dc7b7c16a519d924c50876fb152af661a20749dcbf653c8759e715c1a7a95b18"}, - {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ce3057777a14a9a1399b81eca6a6bfc9612047811234398b84c54aeff6d536ea"}, - {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:48081b6bff550fe10bcc20c01cf6c83dbca2ccf74eeacbfac240264775fd7ecf"}, - {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dcbb7665a9db9f8d7642171152c45da60e16c4f706191d66a1dc47ec9f820aed"}, - {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c155a1a80c5e7a8fa1d9bb1bf3c8a953532b53ab1196092749bafb9d3a7cbb60"}, - {file = "regex-2022.3.15-cp37-cp37m-win32.whl", hash = "sha256:04b5ee2b6d29b4a99d38a6469aa1db65bb79d283186e8460542c517da195a8f6"}, - {file = "regex-2022.3.15-cp37-cp37m-win_amd64.whl", hash = "sha256:797437e6024dc1589163675ae82f303103063a0a580c6fd8d0b9a0a6708da29e"}, - {file = "regex-2022.3.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8afcd1c2297bc989dceaa0379ba15a6df16da69493635e53431d2d0c30356086"}, - {file = "regex-2022.3.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0066a6631c92774391f2ea0f90268f0d82fffe39cb946f0f9c6b382a1c61a5e5"}, - {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8248f19a878c72d8c0a785a2cd45d69432e443c9f10ab924c29adda77b324ae"}, - {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d1f3ea0d1924feb4cf6afb2699259f658a08ac6f8f3a4a806661c2dfcd66db1"}, - {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:794a6bc66c43db8ed06698fc32aaeaac5c4812d9f825e9589e56f311da7becd9"}, - {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d1445824944e642ffa54c4f512da17a953699c563a356d8b8cbdad26d3b7598"}, - {file = "regex-2022.3.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f553a1190ae6cd26e553a79f6b6cfba7b8f304da2071052fa33469da075ea625"}, - {file = "regex-2022.3.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:75a5e6ce18982f0713c4bac0704bf3f65eed9b277edd3fb9d2b0ff1815943327"}, - {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f16cf7e4e1bf88fecf7f41da4061f181a6170e179d956420f84e700fb8a3fd6b"}, - {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dad3991f0678facca1a0831ec1ddece2eb4d1dd0f5150acb9440f73a3b863907"}, - {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:491fc754428514750ab21c2d294486223ce7385446f2c2f5df87ddbed32979ae"}, - {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:6504c22c173bb74075d7479852356bb7ca80e28c8e548d4d630a104f231e04fb"}, - {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01c913cf573d1da0b34c9001a94977273b5ee2fe4cb222a5d5b320f3a9d1a835"}, - {file = "regex-2022.3.15-cp38-cp38-win32.whl", hash = "sha256:029e9e7e0d4d7c3446aa92474cbb07dafb0b2ef1d5ca8365f059998c010600e6"}, - {file = "regex-2022.3.15-cp38-cp38-win_amd64.whl", hash = "sha256:947a8525c0a95ba8dc873191f9017d1b1e3024d4dc757f694e0af3026e34044a"}, - {file = "regex-2022.3.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:591d4fba554f24bfa0421ba040cd199210a24301f923ed4b628e1e15a1001ff4"}, - {file = "regex-2022.3.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9809404528a999cf02a400ee5677c81959bc5cb938fdc696b62eb40214e3632"}, - {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f08a7e4d62ea2a45557f561eea87c907222575ca2134180b6974f8ac81e24f06"}, - {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a86cac984da35377ca9ac5e2e0589bd11b3aebb61801204bd99c41fac516f0d"}, - {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:286908cbe86b1a0240a867aecfe26a439b16a1f585d2de133540549831f8e774"}, - {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b7494df3fdcc95a1f76cf134d00b54962dd83189520fd35b8fcd474c0aa616d"}, - {file = "regex-2022.3.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b1ceede92400b3acfebc1425937454aaf2c62cd5261a3fabd560c61e74f6da3"}, - {file = "regex-2022.3.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0317eb6331146c524751354ebef76a7a531853d7207a4d760dfb5f553137a2a4"}, - {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9c144405220c5ad3f5deab4c77f3e80d52e83804a6b48b6bed3d81a9a0238e4c"}, - {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5b2e24f3ae03af3d8e8e6d824c891fea0ca9035c5d06ac194a2700373861a15c"}, - {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f2c53f3af011393ab5ed9ab640fa0876757498aac188f782a0c620e33faa2a3d"}, - {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:060f9066d2177905203516c62c8ea0066c16c7342971d54204d4e51b13dfbe2e"}, - {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:530a3a16e57bd3ea0dff5ec2695c09632c9d6c549f5869d6cf639f5f7153fb9c"}, - {file = "regex-2022.3.15-cp39-cp39-win32.whl", hash = "sha256:78ce90c50d0ec970bd0002462430e00d1ecfd1255218d52d08b3a143fe4bde18"}, - {file = "regex-2022.3.15-cp39-cp39-win_amd64.whl", hash = "sha256:c5adc854764732dbd95a713f2e6c3e914e17f2ccdc331b9ecb777484c31f73b6"}, - {file = "regex-2022.3.15.tar.gz", hash = "sha256:0a7b75cc7bb4cc0334380053e4671c560e31272c9d2d5a6c4b8e9ae2c9bd0f82"}, -] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] -requests-oauthlib = [ - {file = "requests-oauthlib-1.3.0.tar.gz", hash = "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"}, - {file = "requests_oauthlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d"}, - {file = "requests_oauthlib-1.3.0-py3.7.egg", hash = "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc"}, -] +python-dateutil = [] +pytz = [] +pyyaml = [] +regex = [] +requests = [] +requests-oauthlib = [] rsa = [ {file = "rsa-4.8-py3-none-any.whl", hash = "sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb"}, {file = "rsa-4.8.tar.gz", hash = "sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17"}, ] -sacremoses = [ - {file = "sacremoses-0.0.49-py3-none-any.whl", hash = "sha256:33ca6d4e125271b9201cc7fdf7f03f3ffdd358ee6dd8079c0432811d82da5377"}, - {file = "sacremoses-0.0.49.tar.gz", hash = "sha256:c2ecd3a50d1c09a26253ad84b0b89e9e3a28a023455b72a2197cfeab27ff5141"}, -] -scikit-learn = [ - {file = "scikit-learn-1.0.2.tar.gz", hash = "sha256:b5870959a5484b614f26d31ca4c17524b1b0317522199dc985c3b4256e030767"}, - {file = "scikit_learn-1.0.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:da3c84694ff693b5b3194d8752ccf935a665b8b5edc33a283122f4273ca3e687"}, - {file = "scikit_learn-1.0.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:75307d9ea39236cad7eea87143155eea24d48f93f3a2f9389c817f7019f00705"}, - {file = "scikit_learn-1.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f14517e174bd7332f1cca2c959e704696a5e0ba246eb8763e6c24876d8710049"}, - {file = "scikit_learn-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9aac97e57c196206179f674f09bc6bffcd0284e2ba95b7fe0b402ac3f986023"}, - {file = "scikit_learn-1.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:d93d4c28370aea8a7cbf6015e8a669cd5d69f856cc2aa44e7a590fb805bb5583"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:85260fb430b795d806251dd3bb05e6f48cdc777ac31f2bcf2bc8bbed3270a8f5"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a053a6a527c87c5c4fa7bf1ab2556fa16d8345cf99b6c5a19030a4a7cd8fd2c0"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:245c9b5a67445f6f044411e16a93a554edc1efdcce94d3fc0bc6a4b9ac30b752"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158faf30684c92a78e12da19c73feff9641a928a8024b4fa5ec11d583f3d8a87"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08ef968f6b72033c16c479c966bf37ccd49b06ea91b765e1cc27afefe723920b"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16455ace947d8d9e5391435c2977178d0ff03a261571e67f627c8fee0f9d431a"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-win32.whl", hash = "sha256:2f3b453e0b149898577e301d27e098dfe1a36943f7bb0ad704d1e548efc3b448"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:46f431ec59dead665e1370314dbebc99ead05e1c0a9df42f22d6a0e00044820f"}, - {file = "scikit_learn-1.0.2-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:ff3fa8ea0e09e38677762afc6e14cad77b5e125b0ea70c9bba1992f02c93b028"}, - {file = "scikit_learn-1.0.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:9369b030e155f8188743eb4893ac17a27f81d28a884af460870c7c072f114243"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7d6b2475f1c23a698b48515217eb26b45a6598c7b1840ba23b3c5acece658dbb"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:285db0352e635b9e3392b0b426bc48c3b485512d3b4ac3c7a44ec2a2ba061e66"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cb33fe1dc6f73dc19e67b264dbb5dde2a0539b986435fdd78ed978c14654830"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1391d1a6e2268485a63c3073111fe3ba6ec5145fc957481cfd0652be571226d"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc3744dabc56b50bec73624aeca02e0def06b03cb287de26836e730659c5d29c"}, - {file = "scikit_learn-1.0.2-cp38-cp38-win32.whl", hash = "sha256:a999c9f02ff9570c783069f1074f06fe7386ec65b84c983db5aeb8144356a355"}, - {file = "scikit_learn-1.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:7626a34eabbf370a638f32d1a3ad50526844ba58d63e3ab81ba91e2a7c6d037e"}, - {file = "scikit_learn-1.0.2-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:a90b60048f9ffdd962d2ad2fb16367a87ac34d76e02550968719eb7b5716fd10"}, - {file = "scikit_learn-1.0.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7a93c1292799620df90348800d5ac06f3794c1316ca247525fa31169f6d25855"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:eabceab574f471de0b0eb3f2ecf2eee9f10b3106570481d007ed1c84ebf6d6a1"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:55f2f3a8414e14fbee03782f9fe16cca0f141d639d2b1c1a36779fa069e1db57"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80095a1e4b93bd33261ef03b9bc86d6db649f988ea4dbcf7110d0cded8d7213d"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa38a1b9b38ae1fad2863eff5e0d69608567453fdfc850c992e6e47eb764e846"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff746a69ff2ef25f62b36338c615dd15954ddc3ab8e73530237dd73235e76d62"}, - {file = "scikit_learn-1.0.2-cp39-cp39-win32.whl", hash = "sha256:e174242caecb11e4abf169342641778f68e1bfaba80cd18acd6bc84286b9a534"}, - {file = "scikit_learn-1.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:b54a62c6e318ddbfa7d22c383466d38d2ee770ebdb5ddb668d56a099f6eaf75f"}, -] -scipy = [ - {file = "scipy-1.6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76"}, - {file = "scipy-1.6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092"}, - {file = "scipy-1.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261"}, - {file = "scipy-1.6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced"}, - {file = "scipy-1.6.1-cp37-cp37m-win32.whl", hash = "sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78"}, - {file = "scipy-1.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c"}, - {file = "scipy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519"}, - {file = "scipy-1.6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345"}, - {file = "scipy-1.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d"}, - {file = "scipy-1.6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d"}, - {file = "scipy-1.6.1-cp38-cp38-win32.whl", hash = "sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4"}, - {file = "scipy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf"}, - {file = "scipy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67"}, - {file = "scipy-1.6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627"}, - {file = "scipy-1.6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0"}, - {file = "scipy-1.6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07"}, - {file = "scipy-1.6.1-cp39-cp39-win32.whl", hash = "sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4"}, - {file = "scipy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f"}, - {file = "scipy-1.6.1.tar.gz", hash = "sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11"}, -] -sentencepiece = [ - {file = "sentencepiece-0.1.96-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc969e6694fb27fba7cee2953f350804faf03913f25ae1ee713a7b8a1bc08018"}, - {file = "sentencepiece-0.1.96-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36e9ff61e7b67c5b7ee96733613622620b4802fc8cf188a4dbc1f355b03dde02"}, - {file = "sentencepiece-0.1.96-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e9e9fe8094ca57549d801e9a2017ac5c24108bbf485ea4f8994a72e8e96ee135"}, - {file = "sentencepiece-0.1.96-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b77d27f59d515c43b61745b8173fbe7c7b3014b14b3702a75bf1793471e7def6"}, - {file = "sentencepiece-0.1.96-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dac8c2ad02b5ebc1179c0a14cbc7d7c6f4fd73d4dd51820626402d0aefc974e"}, - {file = "sentencepiece-0.1.96-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:e8ec5bb6777e2060e1499750c50e1b69dca5a0f80f90f2c66656c5f3e5244593"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-macosx_10_6_x86_64.whl", hash = "sha256:99ea2d9db19e63a2d17d5dc64f9ace83fb9308a735be05a1aaf98eb4b496fba7"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeb090ad462833df03af1debce4ae607a2766ef861f992003ad0c56d074ab805"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f8c90df663cd9759b2cf8dd29998b63140ac39e51ada2e739dc13bdac0b4f001"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26d20d713b3ba1b7a19205336afb1e93a4327c372b2f795e907b8dc2315ac92e"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5388882bb24d083f6cc8cffc5c435f3694a7772b018e06ea6fd84d1044009efb"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a92e1932ee8fd500680ccbe1bf53eb33228f4c9d6524ed6f300bcc80ac359f27"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-win32.whl", hash = "sha256:bedf0355117fb4e9b1fc9fc92b4d5ee743a7d468be9f6196e3b94447710ea589"}, - {file = "sentencepiece-0.1.96-cp36-cp36m-win_amd64.whl", hash = "sha256:4997c7ccf2ae462320250314aa5709a88d8a09fa271d073458a07bebf33f8e7c"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-macosx_10_6_x86_64.whl", hash = "sha256:a697257a2cd7581732d7741a8d32a06927f0311c3d277dbc47fa1043350c9d17"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff7d752a7f82d87711ec1a95c2262cb74f98be5b457f0300d81a1aefe5be2a95"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e61e0757e49c306fff78ea75d6b75773418fe22214b4a460959203be934e834"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef59ba19340dc1d002ce5713b911c0ef23c577b08f8ed57998ee3c8e62c5bf6e"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89c038da7f827a6e2ca4c73aeb4e4b25b99d981ce47dd61b04d446c8200cba1e"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d954d25a8705f972e8bfc1dea5464d7e697dd6f4ade092f1a487387e6d6c829a"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-win32.whl", hash = "sha256:fd907a8f744e5337de7fc532dd800c4416b571ea47f8c3c66be10cd1bc67c925"}, - {file = "sentencepiece-0.1.96-cp37-cp37m-win_amd64.whl", hash = "sha256:335bf84d72112cc91f3c3b691d61802fc963503b7772fd8280d20368048b8f3e"}, - {file = "sentencepiece-0.1.96-cp38-cp38-macosx_10_6_x86_64.whl", hash = "sha256:e811984b0908c14c56de7d8226fdd494d87a7ccb75af8ac3a07423037aaafc35"}, - {file = "sentencepiece-0.1.96-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8179785883b556cd517416cdbda6244745414b00ec83132cfe1d26000971f3ae"}, - {file = "sentencepiece-0.1.96-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:466e381f0a812da8fda97a9707498cef3210ea8385a3421bcbadcb5384063969"}, - {file = "sentencepiece-0.1.96-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8cb24d8d0b2f8b7463815a59183eb81ec1d7a06e3217bed456063f3303eddfb"}, - {file = "sentencepiece-0.1.96-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e88354b61f59dfdeb41023f7be8ae31dc627c2dc2dacbc2de8b2d82a0997135c"}, - {file = "sentencepiece-0.1.96-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a336575463d75d3aac1f7e32470b8998643ccd9a73786bd726f6b0470520b6b4"}, - {file = "sentencepiece-0.1.96-cp38-cp38-win32.whl", hash = "sha256:81bb77ba3651114943b2f8f77829cf764137dff06e38f4bf7fa43efea12c7f84"}, - {file = "sentencepiece-0.1.96-cp38-cp38-win_amd64.whl", hash = "sha256:eba0471ab0bb2e07ed06d91ecf5185d402c83d194155a41d8e2aa547d187712e"}, - {file = "sentencepiece-0.1.96-cp39-cp39-macosx_10_6_x86_64.whl", hash = "sha256:78e18d9106c36dcca929e18fd2c412378deac661d47fa3ee25defc55eef8a215"}, - {file = "sentencepiece-0.1.96-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c24c1d9405b2148184ff27c062493d5e3be5c144575f95b5a0d7c660a515af"}, - {file = "sentencepiece-0.1.96-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:940a6999c7d3f55e9d7b194fd5e1f41a7dbed26d3519fb95333216292a39599e"}, - {file = "sentencepiece-0.1.96-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:384148cead5cdab34a4d74fe1fb6a5a8abaafed25eaa4a7698b49dd9482e4c4e"}, - {file = "sentencepiece-0.1.96-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c703e68ea192e45b65c5d5836f6980849d828a18da4189899d7150fad82dc9e"}, - {file = "sentencepiece-0.1.96-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d501713a8396193883aa526f48dc609f5f031a5df1afbafa561cf9ab492ffc76"}, - {file = "sentencepiece-0.1.96-cp39-cp39-win32.whl", hash = "sha256:b8b1dd2712f8a7de5b4c8ec912e6c041d25750bf03e1ce325cdba43bae0944ae"}, - {file = "sentencepiece-0.1.96-cp39-cp39-win_amd64.whl", hash = "sha256:d45e3f78e746aa161bc9f5a31c6a2839c512101113a4065f4d2e7a3ab8198d8c"}, - {file = "sentencepiece-0.1.96-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5513298d62fe63dd0862d08a6eb52a9aa3537006f597f2386184e3f95bb88889"}, - {file = "sentencepiece-0.1.96-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dadccb2e49244b6e64b4527d13ec14d5e094a90b41cf9b963e457e64182f1941"}, - {file = "sentencepiece-0.1.96-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48c6d13b3bfff08060c138248e85df60f6fad11135ad7a8fc2ef6005aacca839"}, - {file = "sentencepiece-0.1.96.tar.gz", hash = "sha256:9bdf097d5bd1d8ce42dfee51f6ff05f5578b96e48c6f6006aa4eff69edfa3639"}, -] -setuptools-scm = [ - {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, - {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, -] +sacremoses = [] +scikit-learn = [] +scipy = [] +sentencepiece = [] +setuptools-scm = [] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, ] -sklearn = [ - {file = "sklearn-0.0.tar.gz", hash = "sha256:e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31"}, -] -tensorboard = [ - {file = "tensorboard-2.8.0-py3-none-any.whl", hash = "sha256:65a338e4424e9079f2604923bdbe301792adce2ace1be68da6b3ddf005170def"}, -] +sklearn = [] +tensorboard = [] tensorboard-data-server = [ {file = "tensorboard_data_server-0.6.1-py3-none-any.whl", hash = "sha256:809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7"}, {file = "tensorboard_data_server-0.6.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:fa8cef9be4fcae2f2363c88176638baf2da19c5ec90addb49b1cde05c95c88ee"}, @@ -1821,108 +1353,25 @@ tensorflow-estimator = [ termcolor = [ {file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"}, ] -threadpoolctl = [ - {file = "threadpoolctl-3.0.0-py3-none-any.whl", hash = "sha256:4fade5b3b48ae4b1c30f200b28f39180371104fccc642e039e0f2435ec8cc211"}, - {file = "threadpoolctl-3.0.0.tar.gz", hash = "sha256:d03115321233d0be715f0d3a5ad1d6c065fe425ddc2d671ca8e45e9fd5d7a52a"}, -] -tokenizers = [ - {file = "tokenizers-0.11.6-cp310-cp310-macosx_10_11_x86_64.whl", hash = "sha256:c24f3e0e69edf015efab6bea0a24d45eb19f477106d00a739c19d2a02f6085fc"}, - {file = "tokenizers-0.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c5a786fe12a4c1782337abc818fc48ca84e07f8cb0eeab263a27fcd30f7fc6f"}, - {file = "tokenizers-0.11.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f7b82aaedb24e0a4dcd8fe77a79de9a0acf43db8ae173cdb4eca1e767566b47"}, - {file = "tokenizers-0.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7d8ea3a05b593e5744c4ad0e6e2cbba6f82588c302d663855316c1861c09557"}, - {file = "tokenizers-0.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fde9a1e7d18caddff3ac13baf4e31235688b0db2ba42bbc8179dc878327560a"}, - {file = "tokenizers-0.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46a763d1f43f46448e41884356f105a2f067b6e573c7e0c67d8f93512304b22c"}, - {file = "tokenizers-0.11.6-cp310-cp310-win32.whl", hash = "sha256:6bc5cc6d5b17bf8222049a2c97bcc117974793e37fb2e42b8fb04b2ef984d165"}, - {file = "tokenizers-0.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:3c1ad5d230bdd6a3f63bbffd16a9fdea6a049ceb6d225e4d70a2664853f40aaf"}, - {file = "tokenizers-0.11.6-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:44697b08469dfe3265a851f87ad41c7f04efa511ada8182b6b08aa809765dcb8"}, - {file = "tokenizers-0.11.6-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0975b9f06f982580909f9fa769baf58b806ab2d099daccc43dc95d60bf56817a"}, - {file = "tokenizers-0.11.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0deaa700f9e442ed4bb4fe2c6482979b3709772bcce2dd7b89dc586ec39ce2e"}, - {file = "tokenizers-0.11.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34ac8450ad93e4dae1c72b7ad6c6a74d2941a68beb25df25d05b2b371267daba"}, - {file = "tokenizers-0.11.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38420ddd3b47d6f13be20bfecd928f4301c8cbebd1a752a7436c22fe01b3f6c4"}, - {file = "tokenizers-0.11.6-cp37-cp37m-macosx_10_11_x86_64.whl", hash = "sha256:c08d5745fb5852adeeffc6bfbe13b77cd95d3f49e7e6129537858c5fb9b7142c"}, - {file = "tokenizers-0.11.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:820a4cc3ef39c556c6f9495ce7cbd169098ca352e073ed3b34d6b74b53df2fbb"}, - {file = "tokenizers-0.11.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c72383a918e9fef9c2bf4666a961f3b312361fb027165b4446ff333441ebf91"}, - {file = "tokenizers-0.11.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6259833c189e36c29e84a853b9503028324a3b176a2ae3980c815456d326b652"}, - {file = "tokenizers-0.11.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79074927fc9efaf13b3accd53246e50ade37550920077411ab55bd5ed4944153"}, - {file = "tokenizers-0.11.6-cp37-cp37m-win32.whl", hash = "sha256:7ed928ac19a3397af6fe3716b313fb13dcaf54978f0fc159eeabaff8e35e5c92"}, - {file = "tokenizers-0.11.6-cp37-cp37m-win_amd64.whl", hash = "sha256:6840554a8cac1196db627d42edbf77f4b5decf6ce6fa9ca073efaaa2cff887a6"}, - {file = "tokenizers-0.11.6-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:216745a6e92eb52d99b56123e6fece59e0dcf7bd1444f42bee09e1f02c89bbec"}, - {file = "tokenizers-0.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e6d02076160d60966d6b2b320744affe6b846ee10a37d1c0222b6ca9e640bdb8"}, - {file = "tokenizers-0.11.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7074162348a7784faccbea18cf814138483ce0c47eb17dc482cbc4bbbde8a00c"}, - {file = "tokenizers-0.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c5ae264b75b7355db2bc3f34e8e3eb608fcca799ff9a109f3d61e4d9614f947"}, - {file = "tokenizers-0.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d393eb6b79ab972e6ebede2aa330903913cf380f6fe975d64a92fca15b5d8579"}, - {file = "tokenizers-0.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:251978daef3b57257bd313df7ef705aacc6cd5831644f6e2e8a42e2c7b7c4a30"}, - {file = "tokenizers-0.11.6-cp38-cp38-win32.whl", hash = "sha256:fd3fccc801b7621eca8dfd876494fad0b00bd43fc73afdc1c11d6be3c9136f78"}, - {file = "tokenizers-0.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:3c1c6e10f655e0f57b9bb9a64ac4b7ea70d20a73f8013f8bd38d21d64d45d96a"}, - {file = "tokenizers-0.11.6-cp39-cp39-macosx_10_11_x86_64.whl", hash = "sha256:809b506a6e9f2f6cba86cfe642c1d1e82cbd758574bdc1207efe07229d6fa4d4"}, - {file = "tokenizers-0.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b3829ad386747760e7d805c9ffd5cb5a9309679467029eea3162fb76c8c89dc"}, - {file = "tokenizers-0.11.6-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:b9a34bd33d866862f45bfc4a409563132a0b6af5951e08f3ccfde36152cd7683"}, - {file = "tokenizers-0.11.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e75efa0275665ca30536c75dc5b4d33492fc40ae40c90d9085bdcdb99e060044"}, - {file = "tokenizers-0.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afc3c76268cdef4567f84a19d9c06fdd697b22f5142d1af18254ec70703db7b"}, - {file = "tokenizers-0.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47878a49211f8df63f7ec7de62f13b1c65e68be501f6a98b28f4bbb8d3390f25"}, - {file = "tokenizers-0.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d4f67758f62d64410e86d548c2c38ca5e59310ca38c18e8239637213c49e2fb"}, - {file = "tokenizers-0.11.6-cp39-cp39-win32.whl", hash = "sha256:468c3e3f414a532924fa277a58807e127a27d2a56b04113540ea755fc5ca9ba8"}, - {file = "tokenizers-0.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b28966c68a2cdecd5120f4becea159eebe0335b8202e21e292eb381031026edc"}, - {file = "tokenizers-0.11.6.tar.gz", hash = "sha256:562b2022faf0882586c915385620d1f11798fc1b32bac55353a530132369a6d0"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ - {file = "tomli-2.0.0-py3-none-any.whl", hash = "sha256:b5bde28da1fed24b9bd1d4d2b8cba62300bfb4ec9a6187a957e8ddb9434c5224"}, - {file = "tomli-2.0.0.tar.gz", hash = "sha256:c292c34f58502a1eb2bbb9f5bbc9a5ebc37bee10ffb8c2d6bbdfa8eb13cc14e1"}, -] -torch = [ - {file = "torch-1.11.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:62052b50fffc29ca7afc0c04ef8206b6f1ca9d10629cb543077e12967e8d0398"}, - {file = "torch-1.11.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:866bfba29ac98dec35d893d8e17eaec149d0ac7a53be7baae5c98069897db667"}, - {file = "torch-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:951640fb8db308a59d9b510e7d1ad910aff92913323bbe4bc75435347ddd346d"}, - {file = "torch-1.11.0-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:5d77b5ece78fdafa5c7f42995ff9474399d22571cd6b2de21a5d666306a2ff8c"}, - {file = "torch-1.11.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:b5a38682769b544c875ecc34bcb81fbad5c922139b61319aacffcfd8a32f528c"}, - {file = "torch-1.11.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f82d77695a60626f2b7382d85bc566de8a6b3e50d32080755abc040db802e419"}, - {file = "torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b96654d42566080a134e784705f33f8536b3b95b5dcde357ed7879b1692a5f78"}, - {file = "torch-1.11.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8ee7c2e8d7f7020d5bfbc1bb91b9591044c26bbd0cee5e4f694cfd7ed8649260"}, - {file = "torch-1.11.0-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:6860b1d1bf0bb0b67a6bd47f85a0e4c825b518eea13b5d6101999dbbcbd5bc0c"}, - {file = "torch-1.11.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4322aa29f50da7f404db06cdf30896ea67b09f673af4a985afc7162bc897864d"}, - {file = "torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e4d2e0ddd652f30e94cff750220324ec45705d4ecc69658f773b3cb1c7a28dd0"}, - {file = "torch-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:34ce5ea4d8d85da32cdbadb50d4585106901e9f8a3527991daa70c13a09de1f7"}, - {file = "torch-1.11.0-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:0ccc85cd06227a3edf809e2c795fd5762c3d4e8a38b5c9f744c6e7cf841361bb"}, - {file = "torch-1.11.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c1554e49d74f1b2c3e7202d77056ba2dd7465437585bac64062b580f714a44e9"}, - {file = "torch-1.11.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:58c7814502b1c129a650d7092033bbb0bbd64faf1a7941631aaa1aeaddc37570"}, - {file = "torch-1.11.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:831cf588f01dda9409e75576741d2823453990dee2983d670f2584b37a01adf7"}, - {file = "torch-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:44a1d02fd20f827f0f36dc26fdcfc45e793806a6ad52769a22260655a77a4369"}, - {file = "torch-1.11.0-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:50fd9bf85c578c871c28f1cb0ace9dfc6024401c7f399b174fb0f370899f4454"}, - {file = "torch-1.11.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:0e48af66ad755f0f9c5f2664028a414f57c49d6adc37e77e06fe0004da4edb61"}, -] -tqdm = [ - {file = "tqdm-4.63.1-py2.py3-none-any.whl", hash = "sha256:6461b009d6792008d0000e1b0c7ca50195ec78c0e808a3a6b668a56a3236c3a5"}, - {file = "tqdm-4.63.1.tar.gz", hash = "sha256:4230a49119a416c88cc47d0d2d32d5d90f1a282d5e497d49801950704e49863d"}, -] -transformers = [ - {file = "transformers-4.17.0-py3-none-any.whl", hash = "sha256:5c7d1955693ebf4a69a0fa700b2ef730232d5d7c1528e15d44c1d473b38f57b8"}, - {file = "transformers-4.17.0.tar.gz", hash = "sha256:986fd59255460555b893a2b1827b9b8dd4e5cd6343e4409d18539208f69fb51b"}, -] +threadpoolctl = [] +tokenizers = [] +toml = [] +tomli = [] +torch = [] +tqdm = [] +transformers = [] typing-extensions = [ {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"}, {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"}, {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, ] -urllib3 = [ - {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, - {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, -] +urllib3 = [] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] -werkzeug = [ - {file = "Werkzeug-2.0.2-py3-none-any.whl", hash = "sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f"}, - {file = "Werkzeug-2.0.2.tar.gz", hash = "sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"}, -] +werkzeug = [] wrapt = [ {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"}, ] -zipp = [ - {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, - {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, -] +zipp = [] diff --git a/pyproject.toml b/pyproject.toml index ab807256264bbc8ce9973eee7fe1935e57df2cb4..563f3885186c1f98725a265b18fa75d3a42cc624 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ cvzone = "^1.5.6" sentencepiece = "^0.1.96" transformers = "^4.17.0" torch = "^1.11.0" +pyarrow = "^12.0.1" [tool.poetry.dev-dependencies] pytest = "^5.2" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 776479f9b9d45d4ea982c864ce58c734e40d5c74..0000000000000000000000000000000000000000 --- a/requirements.txt +++ /dev/null @@ -1,1176 +0,0 @@ -absl-py==0.15.0; python_version >= "3.6" \ - --hash=sha256:72d782fbeafba66ba3e525d46bccac949b9a174dbf66233e50ece09ee688dc81 \ - --hash=sha256:ea907384af023a7e681368bedb896159ab100c7db593efbbd5cde22af11270cd -aiohttp==3.8.1; python_version >= "3.7" \ - --hash=sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8 \ - --hash=sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8 \ - --hash=sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316 \ - --hash=sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15 \ - --hash=sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923 \ - --hash=sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922 \ - --hash=sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1 \ - --hash=sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516 \ - --hash=sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642 \ - --hash=sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7 \ - --hash=sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8 \ - --hash=sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3 \ - --hash=sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2 \ - --hash=sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa \ - --hash=sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32 \ - --hash=sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db \ - --hash=sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632 \ - --hash=sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad \ - --hash=sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a \ - --hash=sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091 \ - --hash=sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440 \ - --hash=sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b \ - --hash=sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec \ - --hash=sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411 \ - --hash=sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782 \ - --hash=sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4 \ - --hash=sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602 \ - --hash=sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96 \ - --hash=sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676 \ - --hash=sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51 \ - --hash=sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8 \ - --hash=sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd \ - --hash=sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2 \ - --hash=sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4 \ - --hash=sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00 \ - --hash=sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93 \ - --hash=sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44 \ - --hash=sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7 \ - --hash=sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c \ - --hash=sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9 \ - --hash=sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17 \ - --hash=sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785 \ - --hash=sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b \ - --hash=sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd \ - --hash=sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e \ - --hash=sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd \ - --hash=sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700 \ - --hash=sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675 \ - --hash=sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf \ - --hash=sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0 \ - --hash=sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5 \ - --hash=sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950 \ - --hash=sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155 \ - --hash=sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33 \ - --hash=sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a \ - --hash=sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75 \ - --hash=sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237 \ - --hash=sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74 \ - --hash=sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca \ - --hash=sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2 \ - --hash=sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2 \ - --hash=sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421 \ - --hash=sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf \ - --hash=sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd \ - --hash=sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d \ - --hash=sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724 \ - --hash=sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef \ - --hash=sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866 \ - --hash=sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2 \ - --hash=sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1 \ - --hash=sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac \ - --hash=sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578 -aiosignal==1.2.0; python_version >= "3.6" \ - --hash=sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a \ - --hash=sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2 -astunparse==1.6.3 \ - --hash=sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8 \ - --hash=sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872 -async-timeout==4.0.2; python_version >= "3.6" \ - --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ - --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c -asynctest==0.13.0; python_version < "3.8" and python_version >= "3.6" \ - --hash=sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676 \ - --hash=sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac -attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" \ - --hash=sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4 \ - --hash=sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd -cached-property==1.5.2; python_version < "3.8" and python_version >= "3.6" \ - --hash=sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130 \ - --hash=sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0 -cachetools==5.0.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") \ - --hash=sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4 \ - --hash=sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6 -certifi==2021.10.8; python_full_version >= "3.6.0" and python_version >= "3.6" \ - --hash=sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569 \ - --hash=sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872 -charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3.6" \ - --hash=sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd \ - --hash=sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455 -click==8.0.4; python_version >= "3.6" and python_full_version >= "3.6.0" \ - --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ - --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb -colorama==0.4.4; python_full_version >= "3.6.0" and platform_system == "Windows" and python_version >= "3.6" \ - --hash=sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2 \ - --hash=sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b -cvzone==1.5.6 \ - --hash=sha256:d6fddfc42c0033db1478f6f4ecc8cef91d51202588eaa2fd96e236202ed64242 -cycler==0.11.0; python_version >= "3.7" \ - --hash=sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3 \ - --hash=sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f -datasets==2.0.0 \ - --hash=sha256:6219d3674ebfbd6978f2f27f7db89aabdac6f7392efda735b9e005b5d87d3c76 \ - --hash=sha256:c93db6b39e5dda72b093d6f11a05945f588e7c5caabb93a0ac4bdf07e0d0ac1a -dill==0.3.4; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.1.0" \ - --hash=sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f \ - --hash=sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675 -filelock==3.6.0; python_version >= "3.7" and python_full_version >= "3.6.0" \ - --hash=sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0 \ - --hash=sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85 -flatbuffers==1.12 \ - --hash=sha256:9e9ef47fa92625c4721036e7c4124182668dc6021d9e7c73704edd395648deb9 \ - --hash=sha256:63bb9a722d5e373701913e226135b28a6f6ac200d5cc7b4d919fa38d73b44610 -fonttools==4.28.5; python_version >= "3.7" \ - --hash=sha256:edf251d5d2cc0580d5f72de4621c338d8c66c5f61abb50cf486640f73c8194d5 \ - --hash=sha256:545c05d0f7903a863c2020e07b8f0a57517f2c40d940bded77076397872d14ca -frozenlist==1.3.0; python_version >= "3.7" \ - --hash=sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3 \ - --hash=sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b \ - --hash=sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868 \ - --hash=sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f \ - --hash=sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b \ - --hash=sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58 \ - --hash=sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02 \ - --hash=sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8 \ - --hash=sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e \ - --hash=sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78 \ - --hash=sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa \ - --hash=sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676 \ - --hash=sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d \ - --hash=sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d \ - --hash=sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c \ - --hash=sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24 \ - --hash=sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa \ - --hash=sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2 \ - --hash=sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f \ - --hash=sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1 \ - --hash=sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93 \ - --hash=sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478 \ - --hash=sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141 \ - --hash=sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae \ - --hash=sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01 \ - --hash=sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846 \ - --hash=sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468 \ - --hash=sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1 \ - --hash=sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a \ - --hash=sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d \ - --hash=sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953 \ - --hash=sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f \ - --hash=sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08 \ - --hash=sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274 \ - --hash=sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e \ - --hash=sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8 \ - --hash=sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5 \ - --hash=sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1 \ - --hash=sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148 \ - --hash=sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0 \ - --hash=sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3 \ - --hash=sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07 \ - --hash=sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9 \ - --hash=sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486 \ - --hash=sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c \ - --hash=sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f \ - --hash=sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa \ - --hash=sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d \ - --hash=sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a \ - --hash=sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b \ - --hash=sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51 \ - --hash=sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a \ - --hash=sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2 \ - --hash=sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed \ - --hash=sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951 \ - --hash=sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b \ - --hash=sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08 \ - --hash=sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab \ - --hash=sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b -fsspec==2022.2.0; python_version >= "3.7" \ - --hash=sha256:eb9c9d9aee49d23028deefffe53e87c55d3515512c63f57e893710301001449a \ - --hash=sha256:20322c659538501f52f6caa73b08b2ff570b7e8ea30a86559721d090e473ad5c -gast==0.4.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" \ - --hash=sha256:b7adcdd5adbebf1adf17378da5ba3f543684dbec47b1cda1f3997e573cd542c4 \ - --hash=sha256:40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1 -google-auth-oauthlib==0.4.6; python_version >= "3.6" \ - --hash=sha256:a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a \ - --hash=sha256:3f2a6e802eebbb6fb736a370fbf3b055edcb6b52878bf2f26330b5e041316c73 -google-auth==2.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" \ - --hash=sha256:ef6f4827f6a3f9c5ff884616e2ba779acb5d690486fb70ca5e3091ed85ad932a \ - --hash=sha256:d1fad279d9d97e7d6b4a09a53e851ab2ee6d36d5c19547354a3f47a8a6ae41b9 -google-pasta==0.2.0 \ - --hash=sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e \ - --hash=sha256:4612951da876b1a10fe3960d7226f0c7682cf901e16ac06e473b267a5afa8954 \ - --hash=sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed -grpcio==1.34.1; python_version >= "3.6" \ - --hash=sha256:5c4402fd8ce28e2847112105591139dc121c8980770f683eb781be1568a64097 \ - --hash=sha256:c6f756c11144c7ecb51b87f0d60a4b72e05635b9f24ddfa004286ab0c8527fa0 \ - --hash=sha256:ec6d1b3daed886a73e40b4dc553474ef415acc111e913d7324cc2c6b0ba9efe0 \ - --hash=sha256:d757bc8bb12f07014dde55a04b5261c94828b605cf0726d02d491c3dc71aa6bb \ - --hash=sha256:f74cb93cd090b07528cf586a18628370e5780c08e0239f4af796f60a5e773568 \ - --hash=sha256:c4355fa382dfc71c130dc3eccd8ae606a13e1729be2a77b6c44cd5a130d0c616 \ - --hash=sha256:f1a8048428a7a1e5b12322b3ee44ee0bb8e1bea1d67f08fa1813c455f3ef638c \ - --hash=sha256:0bd906496b9dd3751b9e5cacc7ceb25a57c16ce2aa67315b85ee86a4ba7246f1 \ - --hash=sha256:5e488a40ebeb883117aa0dba2cea410ef2ab545a2403b2ac9101e62d42808c71 \ - --hash=sha256:98c06f0f7feeca736cc98f3f46b9b74c5f5fdc5febfc7d72728d1895c57be87f \ - --hash=sha256:90a4799c15b8b5aa587f65650a0cea28ea88bcd2c5fdf4f1adb2b8b7b4e77a5e \ - --hash=sha256:121af89d0b9ba1d47c738242783675009dd4e9067359481e4b743eb9e5886682 \ - --hash=sha256:1be193803c706f78d0df12c817eaf2415fb4d39472fa00d860700e6c7a99f8f7 \ - --hash=sha256:9e465a1d594a9a5f4252c4abbb93909c42768bee5fbfcd18098d60bf06a35573 \ - --hash=sha256:8b16d14160b7fd8bc43600be70e0da677d17dd8aafb5a258bbda996fe410320e \ - --hash=sha256:8a543209ab606dd55c58dc218be8e8619214607f03717dded78c7d27f1d05ba5 \ - --hash=sha256:f74f270550df347a18f839331f84838b938c8923a9e13a6fa7cc69c79087a686 \ - --hash=sha256:163a2cf7f4df3ff0a04f49e634526e3d88f02393a7ebf8f34a2134c88b06322e \ - --hash=sha256:11735ac4efd53691afeb36d006e20db9b7d4b6f3356c751f32d5747aee38fa4c \ - --hash=sha256:79bda20756e2fc7236b94468ffcce4b516953f946a80b7ea883f89d9e9b25a41 \ - --hash=sha256:1857f88b351e2382aa57ed892960361a8b71acca4aa1b90998007b4177f15114 \ - --hash=sha256:6f81fbf9f830e20aee93480305877f73f15bfa58fa87433eb331696be47ae7ba \ - --hash=sha256:ff8aef869c2e9de65c3a693406f7d1200d87e6d541d096eae69f98e7f301fa60 \ - --hash=sha256:ece7459c182e00ca90b2e5823940a552651b5eb3acdeee9350377ddb44d9c412 \ - --hash=sha256:7924ef3a898f6ff985540ee5d8c7554f0c925dc7668c3d63461600ea50b39658 \ - --hash=sha256:b5e96ca83d5c34c9b60d8951e52492b0d9d072c3fe38a1c19765932e121036ce \ - --hash=sha256:fe9360347a3f4f2ec6923d8afb03a9194f3f14e054cb09e75e8346af9c0aa9f6 \ - --hash=sha256:cadc09c9bd24ecf3ba7ae55b5a741f7de694a8843e97e82a7c3fa2e6e81e0f9a \ - --hash=sha256:5971e6dfcfa0ebeb0df2d15383e1b53fa36208198c8aff9a4eed5ece2a6d4571 \ - --hash=sha256:a181092b534e996e36d0c0216d81280d4942322170c823b2fb84ec4597dc0bd5 \ - --hash=sha256:2b97cdd4582445ad7bd441f5f3c57d838bcdc518a05713dab0c7f4b945afb39e \ - --hash=sha256:ff760c5ce73c177851864e8caaf75467eaf06c1b6857b21e1789658375e720fb \ - --hash=sha256:fd58ea88dd5439e03c6587f0b672db1627ec8ed47be312c74632650dfed33c2e \ - --hash=sha256:f6fee4445cffb45593b4c1d9bb0bc7922e77ec846a1237e2e744b1223d69c863 \ - --hash=sha256:cd4da71e105088b1a7e629d1b033f16d87dec08524d0e4f5d77982af6fe1b6c2 \ - --hash=sha256:9d43849d8925ec24bf121bccd941a13d4e8c2cffdfa769a04a6d4ed38c6b88a2 \ - --hash=sha256:696f0de4d47f738063432bbbcecd07f78256864f0839e41369458421f539f00a \ - --hash=sha256:8fff784ec5d12252a7cc0ab6f1a3206861b94e45ee0ebeba2439bd10a6db2f1a \ - --hash=sha256:ed8ac4f76cbbef5dc54594cb7bf6fbb985f5be66abcb1f9da8142500e4d76492 \ - --hash=sha256:8dad4184e4669672e126de26776eba8e3db4914660b4a0a6c7edbdbcf3e2f05f \ - --hash=sha256:011e9b5e47cb9d2a808e8c2dd5ae86df085d5879d9e8095a24631a32c577f231 \ - --hash=sha256:49ffc5bb78b201db24d8d1644193beb50a896c3cb35b259b4fb9c44dba18585f \ - --hash=sha256:cfe0e015cb8db5a27a92621fdd9dc8e69b2f7130db326601802e6ff36626deff \ - --hash=sha256:809732f300fa8093b40f843c36f6f78423ffb40493098185bc4a96bd67126db5 \ - --hash=sha256:96dc85c059f15390beb7ac6bf075d1e4cf72e8f5c9b6c37ea179b7cc579816fd \ - --hash=sha256:1c746a3cd8a830d8d916a9d0476a786aaa98c5cc2a096344af2be955e439f8ac -h5py==3.1.0; python_version >= "3.6" \ - --hash=sha256:1cd367f89a5441236bdbb795e9fb9a9e3424929c00b4a54254ca760437f83d69 \ - --hash=sha256:fea05349f63625a8fb808e57e42bb4c76930cf5d50ac58b678c52f913a48a89b \ - --hash=sha256:2e37352ddfcf9d77a2a47f7c8f7e125c6d20cc06c2995edeb7be222d4e152636 \ - --hash=sha256:e33f61d3eb862614c0f273a1f993a64dc2f093e1a3094932c50ada9d2db2170f \ - --hash=sha256:236ac8d943be30b617ab615c3d4a4bf4a438add2be87e54af3687ab721a18fac \ - --hash=sha256:02c391fdb980762a1cc03a4bcaecd03dc463994a9a63a02264830114a96e111f \ - --hash=sha256:f89a3dae38843ffa49d17a31a3509a8129e9b46ece602a0138e1ed79e685c361 \ - --hash=sha256:ba71f6229d2013fbb606476ecc29c6223fc16b244d35fcd8566ad9dbaf910857 \ - --hash=sha256:dccb89358bc84abcd711363c3e138f9f4eccfdf866f2139a8e72308328765b2c \ - --hash=sha256:cb74df83709d6d03d11e60b9480812f58da34f194beafa8c8314dbbeeedfe0a6 \ - --hash=sha256:80c623be10479e81b64fa713b7ed4c0bbe9f02e8e7d2a2e5382336087b615ce4 \ - --hash=sha256:1cdfd1c5449ca1329d152f0b66830e93226ebce4f5e07dd8dc16bfc2b1a49d7b \ - --hash=sha256:1e2516f190652beedcb8c7acfa1c6fa92d99b42331cbef5e5c7ec2d65b0fc3c2 -happytransformer==2.4.1 \ - --hash=sha256:d42bf30c2552e79d5fa77d859222e34e9929edbb480d64a5878fb23eae1a990f \ - --hash=sha256:1008835ce8567a41b6ca36a6316313f59a3f7c76b22603fc7cca72022891b452 -huggingface-hub==0.4.0; python_full_version >= "3.6.0" \ - --hash=sha256:808021af1ce1111104973ae54d81738eaf40be6d1e82fc6bdedb82f81c6206e7 \ - --hash=sha256:f0e3389f8988eb7781b17de520ae7fd0aa50d9823534e3ae55344d943a88ac87 -idna==3.3; python_full_version >= "3.6.0" and python_version >= "3.6" \ - --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \ - --hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d -importlib-metadata==4.10.1; python_version >= "3.7" and python_version < "3.8" and python_full_version >= "3.6.0" \ - --hash=sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6 \ - --hash=sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e -joblib==1.1.0; python_version >= "3.7" and python_full_version >= "3.6.0" \ - --hash=sha256:f21f109b3c7ff9d95f8387f752d0d9c34a02aa2f7060c2135f465da0e5160ff6 \ - --hash=sha256:4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35 -keras-nightly==2.5.0.dev2021032900 \ - --hash=sha256:6ba70f738f4008222de7e7fdd5b2b18c48c49b897a9fca54c844854e25964011 -keras-preprocessing==1.1.2 \ - --hash=sha256:7b82029b130ff61cc99b55f3bd27427df4838576838c5b2f65940e4fcec99a7b \ - --hash=sha256:add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3 -kiwisolver==1.3.2; python_version >= "3.7" \ - --hash=sha256:1d819553730d3c2724582124aee8a03c846ec4362ded1034c16fb3ef309264e6 \ - --hash=sha256:8d93a1095f83e908fc253f2fb569c2711414c0bfd451cab580466465b235b470 \ - --hash=sha256:c4550a359c5157aaf8507e6820d98682872b9100ce7607f8aa070b4b8af6c298 \ - --hash=sha256:2210f28778c7d2ee13f3c2a20a3a22db889e75f4ec13a21072eabb5693801e84 \ - --hash=sha256:82f49c5a79d3839bc8f38cb5f4bfc87e15f04cbafa5fbd12fb32c941cb529cfb \ - --hash=sha256:9661a04ca3c950a8ac8c47f53cbc0b530bce1b52f516a1e87b7736fec24bfff0 \ - --hash=sha256:2ddb500a2808c100e72c075cbb00bf32e62763c82b6a882d403f01a119e3f402 \ - --hash=sha256:72be6ebb4e92520b9726d7146bc9c9b277513a57a38efcf66db0620aec0097e0 \ - --hash=sha256:83d2c9db5dfc537d0171e32de160461230eb14663299b7e6d18ca6dca21e4977 \ - --hash=sha256:cba430db673c29376135e695c6e2501c44c256a81495da849e85d1793ee975ad \ - --hash=sha256:4116ba9a58109ed5e4cb315bdcbff9838f3159d099ba5259c7c7fb77f8537492 \ - --hash=sha256:19554bd8d54cf41139f376753af1a644b63c9ca93f8f72009d50a2080f870f77 \ - --hash=sha256:a7a4cf5bbdc861987a7745aed7a536c6405256853c94abc9f3287c3fa401b174 \ - --hash=sha256:0007840186bacfaa0aba4466d5890334ea5938e0bb7e28078a0eb0e63b5b59d5 \ - --hash=sha256:ec2eba188c1906b05b9b49ae55aae4efd8150c61ba450e6721f64620c50b59eb \ - --hash=sha256:3dbb3cea20b4af4f49f84cffaf45dd5f88e8594d18568e0225e6ad9dec0e7967 \ - --hash=sha256:5326ddfacbe51abf9469fe668944bc2e399181a2158cb5d45e1d40856b2a0589 \ - --hash=sha256:c6572c2dab23c86a14e82c245473d45b4c515314f1f859e92608dcafbd2f19b8 \ - --hash=sha256:b5074fb09429f2b7bc82b6fb4be8645dcbac14e592128beeff5461dcde0af09f \ - --hash=sha256:22521219ca739654a296eea6d4367703558fba16f98688bd8ce65abff36eaa84 \ - --hash=sha256:c358721aebd40c243894298f685a19eb0491a5c3e0b923b9f887ef1193ddf829 \ - --hash=sha256:7ba5a1041480c6e0a8b11a9544d53562abc2d19220bfa14133e0cdd9967e97af \ - --hash=sha256:44e6adf67577dbdfa2d9f06db9fbc5639afefdb5bf2b4dfec25c3a7fbc619536 \ - --hash=sha256:1d45d1c74f88b9f41062716c727f78f2a59a5476ecbe74956fafb423c5c87a76 \ - --hash=sha256:70adc3658138bc77a36ce769f5f183169bc0a2906a4f61f09673f7181255ac9b \ - --hash=sha256:b6a5431940f28b6de123de42f0eb47b84a073ee3c3345dc109ad550a3307dd28 \ - --hash=sha256:ee040a7de8d295dbd261ef2d6d3192f13e2b08ec4a954de34a6fb8ff6422e24c \ - --hash=sha256:8dc3d842fa41a33fe83d9f5c66c0cc1f28756530cd89944b63b072281e852031 \ - --hash=sha256:a498bcd005e8a3fedd0022bb30ee0ad92728154a8798b703f394484452550507 \ - --hash=sha256:80efd202108c3a4150e042b269f7c78643420cc232a0a771743bb96b742f838f \ - --hash=sha256:f8eb7b6716f5b50e9c06207a14172cf2de201e41912ebe732846c02c830455b9 \ - --hash=sha256:f441422bb313ab25de7b3dbfd388e790eceb76ce01a18199ec4944b369017009 \ - --hash=sha256:30fa008c172355c7768159983a7270cb23838c4d7db73d6c0f6b60dde0d432c6 \ - --hash=sha256:2f8f6c8f4f1cff93ca5058d6ec5f0efda922ecb3f4c5fb76181f327decff98b8 \ - --hash=sha256:ba677bcaff9429fd1bf01648ad0901cea56c0d068df383d5f5856d88221fe75b \ - --hash=sha256:7843b1624d6ccca403a610d1277f7c28ad184c5aa88a1750c1a999754e65b439 \ - --hash=sha256:e6f5eb2f53fac7d408a45fbcdeda7224b1cfff64919d0f95473420a931347ae9 \ - --hash=sha256:eedd3b59190885d1ebdf6c5e0ca56828beb1949b4dfe6e5d0256a461429ac386 \ - --hash=sha256:dedc71c8eb9c5096037766390172c34fb86ef048b8e8958b4e484b9e505d66bc \ - --hash=sha256:bf7eb45d14fc036514c09554bf983f2a72323254912ed0c3c8e697b62c4c158f \ - --hash=sha256:2b65bd35f3e06a47b5c30ea99e0c2b88f72c6476eedaf8cfbc8e66adb5479dcf \ - --hash=sha256:25405f88a37c5f5bcba01c6e350086d65e7465fd1caaf986333d2a045045a223 \ - --hash=sha256:bcadb05c3d4794eb9eee1dddf1c24215c92fb7b55a80beae7a60530a91060560 \ - --hash=sha256:fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c -markdown==3.3.6; python_version >= "3.6" \ - --hash=sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3 \ - --hash=sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006 -matplotlib==3.5.1; python_version >= "3.7" \ - --hash=sha256:456cc8334f6d1124e8ff856b42d2cc1c84335375a16448189999496549f7182b \ - --hash=sha256:8a77906dc2ef9b67407cec0bdbf08e3971141e535db888974a915be5e1e3efc6 \ - --hash=sha256:8e70ae6475cfd0fad3816dcbf6cac536dc6f100f7474be58d59fa306e6e768a4 \ - --hash=sha256:53273c5487d1c19c3bc03b9eb82adaf8456f243b97ed79d09dded747abaf1235 \ - --hash=sha256:e3b6f3fd0d8ca37861c31e9a7cab71a0ef14c639b4c95654ea1dd153158bf0df \ - --hash=sha256:e8c87cdaf06fd7b2477f68909838ff4176f105064a72ca9d24d3f2a29f73d393 \ - --hash=sha256:e2f28a07b4f82abb40267864ad7b3a4ed76f1b1663e81c7efc84a9b9248f672f \ - --hash=sha256:d70a32ee1f8b55eed3fd4e892f0286df8cccc7e0475c11d33b5d0a148f5c7599 \ - --hash=sha256:68fa30cec89b6139dc559ed6ef226c53fd80396da1919a1b5ef672c911aaa767 \ - --hash=sha256:2e3484d8455af3fdb0424eae1789af61f6a79da0c80079125112fd5c1b604218 \ - --hash=sha256:e293b16cf303fe82995e41700d172a58a15efc5331125d08246b520843ef21ee \ - --hash=sha256:e3520a274a0e054e919f5b3279ee5dbccf5311833819ccf3399dab7c83e90a25 \ - --hash=sha256:2252bfac85cec7af4a67e494bfccf9080bcba8a0299701eab075f48847cca907 \ - --hash=sha256:abf67e05a1b7f86583f6ebd01f69b693b9c535276f4e943292e444855870a1b8 \ - --hash=sha256:6c094e4bfecd2fa7f9adffd03d8abceed7157c928c2976899de282f3600f0a3d \ - --hash=sha256:506b210cc6e66a0d1c2bb765d055f4f6bc2745070fb1129203b67e85bbfa5c18 \ - --hash=sha256:b04fc29bcef04d4e2d626af28d9d892be6aba94856cb46ed52bcb219ceac8943 \ - --hash=sha256:577ed20ec9a18d6bdedb4616f5e9e957b4c08563a9f985563a31fd5b10564d2a \ - --hash=sha256:e486f60db0cd1c8d68464d9484fd2a94011c1ac8593d765d0211f9daba2bd535 \ - --hash=sha256:b71f3a7ca935fc759f2aed7cec06cfe10bc3100fadb5dbd9c435b04e557971e1 \ - --hash=sha256:d24e5bb8028541ce25e59390122f5e48c8506b7e35587e5135efcb6471b4ac6c \ - --hash=sha256:778d398c4866d8e36ee3bf833779c940b5f57192fa0a549b3ad67bc4c822771b \ - --hash=sha256:bb1c613908f11bac270bc7494d68b1ef6e7c224b7a4204d5dacf3522a41e2bc3 \ - --hash=sha256:edf5e4e1d5fb22c18820e8586fb867455de3b109c309cb4fce3aaed85d9468d1 \ - --hash=sha256:40e0d7df05e8efe60397c69b467fc8f87a2affeb4d562fe92b72ff8937a2b511 \ - --hash=sha256:7a350ca685d9f594123f652ba796ee37219bf72c8e0fc4b471473d87121d6d34 \ - --hash=sha256:3e66497cd990b1a130e21919b004da2f1dc112132c01ac78011a90a0f9229778 \ - --hash=sha256:87900c67c0f1728e6db17c6809ec05c025c6624dcf96a8020326ea15378fe8e7 \ - --hash=sha256:b8a4fb2a0c5afbe9604f8a91d7d0f27b1832c3e0b5e365f95a13015822b4cd65 \ - --hash=sha256:fe8d40c434a8e2c68d64c6d6a04e77f21791a93ff6afe0dce169597c110d3079 \ - --hash=sha256:34a1fc29f8f96e78ec57a5eff5e8d8b53d3298c3be6df61e7aa9efba26929522 \ - --hash=sha256:b19a761b948e939a9e20173aaae76070025f0024fc8f7ba08bef22a5c8573afc \ - --hash=sha256:6803299cbf4665eca14428d9e886de62e24f4223ac31ab9c5d6d5339a39782c7 \ - --hash=sha256:14334b9902ec776461c4b8c6516e26b450f7ebe0b3ef8703bf5cdfbbaecf774a \ - --hash=sha256:b2e9810e09c3a47b73ce9cab5a72243a1258f61e7900969097a817232246ce1c -mediapipe==0.8.9.1 \ - --hash=sha256:5725d5b5393c966d11d3a5346e385e3f3a75b0ed7fb437feb1cbed8592a0ceed \ - --hash=sha256:2cb270484071c7a8469b8107727a42696932fa9d8b8e9dcfe04ab8268bdc4bef \ - --hash=sha256:6b34c83519bfaba787dd1914e0933b1ec2c4be340f8f99b21ccd989ca6227d8d \ - --hash=sha256:36b38ac6d08684c7cdaa495a0bdc4002bb19e21bd38b0631999c6f219cac7861 \ - --hash=sha256:d8228dde9f347a8b979a785d4f02ced23adcec004856161465836741e79a96f1 \ - --hash=sha256:97550e319484f22dbf68dcaf40288fe6eadd270657e5c87579e0cc347ec5a589 \ - --hash=sha256:4d10fffc5effe53f125bb587a6425ff981aae9d25876842e10d531fb52ed21db \ - --hash=sha256:98d9d36808e4b15d8b5c6a96d7b304f237e45118f0969efef1427a0ac3de8254 \ - --hash=sha256:36f48347067b1684012e991412336262cba7899c427b234c8eea495d883698e0 \ - --hash=sha256:e7a370faa2cd2907c3aa3351fea284b776e16aafd24f1069d4c261b0b3bd367f \ - --hash=sha256:319c727ef2fd633ba47d702fdfc610304a16f87c649be63730a9d3e7f015100c \ - --hash=sha256:7c35fc14b22a0dbe1bf4ceffe8dc8c2fb94896130e98df0e3d15fd956e973641 -multidict==6.0.2; python_version >= "3.7" \ - --hash=sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2 \ - --hash=sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3 \ - --hash=sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c \ - --hash=sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f \ - --hash=sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9 \ - --hash=sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20 \ - --hash=sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88 \ - --hash=sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7 \ - --hash=sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee \ - --hash=sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672 \ - --hash=sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9 \ - --hash=sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87 \ - --hash=sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389 \ - --hash=sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293 \ - --hash=sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658 \ - --hash=sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51 \ - --hash=sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608 \ - --hash=sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3 \ - --hash=sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4 \ - --hash=sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b \ - --hash=sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8 \ - --hash=sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba \ - --hash=sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43 \ - --hash=sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8 \ - --hash=sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b \ - --hash=sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15 \ - --hash=sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc \ - --hash=sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a \ - --hash=sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60 \ - --hash=sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86 \ - --hash=sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d \ - --hash=sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0 \ - --hash=sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d \ - --hash=sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376 \ - --hash=sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693 \ - --hash=sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849 \ - --hash=sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49 \ - --hash=sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516 \ - --hash=sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227 \ - --hash=sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9 \ - --hash=sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d \ - --hash=sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57 \ - --hash=sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96 \ - --hash=sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c \ - --hash=sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e \ - --hash=sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071 \ - --hash=sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032 \ - --hash=sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2 \ - --hash=sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c \ - --hash=sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9 \ - --hash=sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80 \ - --hash=sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d \ - --hash=sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb \ - --hash=sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68 \ - --hash=sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360 \ - --hash=sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937 \ - --hash=sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a \ - --hash=sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae \ - --hash=sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013 -multiprocess==0.70.12.2 \ - --hash=sha256:35d41e410ca2a32977a483ae1f40f86b193b45cecf85567c2fae402fb8bf172e \ - --hash=sha256:9a02237eae21975155c816883479f72e239d16823a6bc063173d59acec9bcf41 \ - --hash=sha256:f12a939cd2f01d0a900e7ef2aaee3c351a49fd2297d7f760b537af22727561b8 \ - --hash=sha256:be3ad3eaf204abc646d85e70e41244f66d88200628a0ab867c8fc206b97cedbf \ - --hash=sha256:c85ffc38c50c5a4f32f3f3c1a284725b7b5040188f254eba6e572c53d3da525b \ - --hash=sha256:a9f58945edb234591684c0a181b744a3231643814ef3a8f47cea9a2073b4b2bb \ - --hash=sha256:0e0a5ae4bd84e4c22baddf824d3b8168214f8c1cce51e2cb080421cb1f7b04d1 \ - --hash=sha256:916a314a1e0f3454033d59672ba6181fa45948ab1091d68cdd479258576e7b27 \ - --hash=sha256:b3f866f7d9c7acc1a9cb1b6063a29f5cb140ff545b35b71fd4bfdac6f19d75fa \ - --hash=sha256:6aa67e805e50b6e9dfc56dd0f0c85ac3409e6791d4ec5405c5f9bc0a47d745a4 \ - --hash=sha256:85941e650c277af44fc82e3e97faacb920e5ce3615238b540cbad4012d6f60e9 \ - --hash=sha256:6f812a1d3f198b7cacd63983f60e2dc1338bd4450893f90c435067b5a3127e6f \ - --hash=sha256:206bb9b97b73f87fec1ed15a19f8762950256aa84225450abc7150d02855a083 -numpy==1.19.5 \ - --hash=sha256:cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff \ - --hash=sha256:aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea \ - --hash=sha256:8b5e972b43c8fc27d56550b4120fe6257fdc15f9301914380b27f74856299fea \ - --hash=sha256:43d4c81d5ffdff6bae58d66a3cd7f54a7acd9a0e7b18d97abb255defc09e3140 \ - --hash=sha256:a4646724fba402aa7504cd48b4b50e783296b5e10a524c7a6da62e4a8ac9698d \ - --hash=sha256:2e55195bc1c6b705bfd8ad6f288b38b11b1af32f3c8289d6c50d47f950c12e76 \ - --hash=sha256:39b70c19ec771805081578cc936bbe95336798b7edf4732ed102e7a43ec5c07a \ - --hash=sha256:dbd18bcf4889b720ba13a27ec2f2aac1981bd41203b3a3b27ba7a33f88ae4827 \ - --hash=sha256:603aa0706be710eea8884af807b1b3bc9fb2e49b9f4da439e76000f3b3c6ff0f \ - --hash=sha256:cae865b1cae1ec2663d8ea56ef6ff185bad091a5e33ebbadd98de2cfa3fa668f \ - --hash=sha256:36674959eed6957e61f11c912f71e78857a8d0604171dfd9ce9ad5cbf41c511c \ - --hash=sha256:06fab248a088e439402141ea04f0fffb203723148f6ee791e9c75b3e9e82f080 \ - --hash=sha256:6149a185cece5ee78d1d196938b2a8f9d09f5a5ebfbba66969302a778d5ddd1d \ - --hash=sha256:50a4a0ad0111cc1b71fa32dedd05fa239f7fb5a43a40663269bb5dc7877cfd28 \ - --hash=sha256:d051ec1c64b85ecc69531e1137bb9751c6830772ee5c1c426dbcfe98ef5788d7 \ - --hash=sha256:a12ff4c8ddfee61f90a1633a4c4afd3f7bcb32b11c52026c92a12e1325922d0d \ - --hash=sha256:cf2402002d3d9f91c8b01e66fbb436a4ed01c6498fffed0e4c7566da1d40ee1e \ - --hash=sha256:1ded4fce9cfaaf24e7a0ab51b7a87be9038ea1ace7f34b841fe3b6894c721d1c \ - --hash=sha256:012426a41bc9ab63bb158635aecccc7610e3eff5d31d1eb43bc099debc979d94 \ - --hash=sha256:759e4095edc3c1b3ac031f34d9459fa781777a93ccc633a472a5468587a190ff \ - --hash=sha256:a9d17f2be3b427fbb2bce61e596cf555d6f8a56c222bd2ca148baeeb5e5c783c \ - --hash=sha256:99abf4f353c3d1a0c7a5f27699482c987cf663b1eac20db59b8c7b061eabd7fc \ - --hash=sha256:384ec0463d1c2671170901994aeb6dce126de0a95ccc3976c43b0038a37329c2 \ - --hash=sha256:811daee36a58dc79cf3d8bdd4a490e4277d0e4b7d103a001a4e73ddb48e7e6aa \ - --hash=sha256:c843b3f50d1ab7361ca4f0b3639bf691569493a56808a0b0c54a051d260b7dbd \ - --hash=sha256:d6631f2e867676b13026e2846180e2c13c1e11289d67da08d71cacb2cd93d4aa \ - --hash=sha256:7fb43004bce0ca31d8f13a6eb5e943fa73371381e53f7074ed21a4cb786c32f8 \ - --hash=sha256:2ea52bd92ab9f768cc64a4c3ef8f4b2580a17af0a5436f6126b08efbd1838371 \ - --hash=sha256:400580cbd3cff6ffa6293df2278c75aef2d58d8d93d3c5614cd67981dae68ceb \ - --hash=sha256:df609c82f18c5b9f6cb97271f03315ff0dbe481a2a02e56aeb1b1a985ce38e60 \ - --hash=sha256:ab83f24d5c52d60dbc8cd0528759532736b56db58adaa7b5f1f76ad551416a1e \ - --hash=sha256:0eef32ca3132a48e43f6a0f5a82cb508f22ce5a3d6f67a8329c81c8e226d3f6e \ - --hash=sha256:a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73 \ - --hash=sha256:a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4 -oauthlib==3.1.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" \ - --hash=sha256:42bf6354c2ed8c6acb54d971fce6f88193d97297e18602a3a886603f9d7730cc \ - --hash=sha256:8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3 -opencv-contrib-python==4.5.2.54; python_version >= "3.6" \ - --hash=sha256:e69c421ead33c6b3b9d54b9f80b2d9dee7c6a0415430394ccdcf7cfbacfabc05 \ - --hash=sha256:02dc1068477420b76d27d649e5de16d7000012ed54819f9fc89ca7f97543a03a \ - --hash=sha256:c1247971ea9f223c70ae1c593e27aa50d2657ab17d2ed133d8e3af4feb59059e \ - --hash=sha256:4f780d41dc99c4cafc1efb1b87a272b847b46d4f66218bfd8c0a5309ba7a7819 \ - --hash=sha256:482d1d2eca42d6f16760e3cd41e2cfefc1b326c1b533ecafefa3494595a9f4c6 \ - --hash=sha256:1811b312ed7bd4918275e70ac1656a83d463ab51b4ca16521190d87657d85d87 \ - --hash=sha256:80d3217943562546a57d08b5dd984a2e470f86a1eecc2e2a6b589fc93d2bd2a3 \ - --hash=sha256:baf52a39455e477465bd3afda45c850b2d78c18aaf9dd1324c9912b6613d56cd \ - --hash=sha256:dececde5e9b2768807ae6021c15981da83c5d9ea25b9208df38049779e600687 \ - --hash=sha256:dfb398d58020522696864c32deebd6c45b3d0d4fbf1cfce319705d142330268c \ - --hash=sha256:bb90c814a3a22a85ae2b5708dc5fa57edba90d9aef30246867087f4920a80a0f \ - --hash=sha256:8e551ae056e9b66151a314e18f40579b029bb822cc17c1b848d065cef5c54ffe \ - --hash=sha256:9ea70355894c9897d194db3e80c109c9a674106b1c0270256c5d7e0811f71ef8 \ - --hash=sha256:91e0e87cdbecf64f869d2b6a0822f911cb27e8f2ad34a124c7647aa6c59ef3d6 \ - --hash=sha256:0528b07538810dcf2ca9fc68f845c63d6acdb9232e52165baa1cd202672dee39 \ - --hash=sha256:e993b5f292f09714176839c829997bc0c86d757a6055e99199f7746f08bf3029 \ - --hash=sha256:023477356304603b88685d360d92b6d32fda6ae35d8070406d04a978dca8df49 \ - --hash=sha256:40c282c2ab795122ee04ef05dd566aace99799b5ce974999075bfb23d2d67cc3 \ - --hash=sha256:0d12cb62e8494c2e215d6b8f6867f9b0c67b450d071a107803c8ffd6d55efd8c \ - --hash=sha256:b6ef54585322f66c6300230224308736fb5381c381bee2228d16914e0f370e3a \ - --hash=sha256:80b49c7861689f2f6722bd7a826855ecc8b94992ea3534316d5a66f1f20ac141 \ - --hash=sha256:bf53d50297dc71e0681bc08025b53d76f9278abdbf0b595980b72dd4a9025cf5 \ - --hash=sha256:d71960798c029fffdc37f4f07ec356f760a444f66fc217e3e45185f7bbcc77f3 \ - --hash=sha256:4f2c5e4c6caf11a45415e8bb40bb4a45f6dd76029e8353e9956c6729bedb43ad \ - --hash=sha256:fbdddce88a587308c3789b0a34894032af1e962ac38764c44945f23808f16b26 \ - --hash=sha256:9522404c265825e4527a1b00eeecd6f0adcb22ddef24a91d8a0c2f2b2c348b4e \ - --hash=sha256:abd6d6114b69685fd8201eaa1da2555dc5f419e20a94567f2dd3e8471f3d748b \ - --hash=sha256:c4ff7cb9c856af521982b54602707a61f8dae8cc28f5949bf1e3d0453d08a9f0 \ - --hash=sha256:aff6bcc6d12e664af16be07a583f6a6a637d6e17784bd06abfb07573807a199e \ - --hash=sha256:4179b78d8c1eb279fcb2cbb41e6cdb3a127ae5d96c39241ef88dab3382e56da1 \ - --hash=sha256:4544b8b03dc50fea42f67013cdff5b74a326f7631616055c2a2e998fef652e0f \ - --hash=sha256:8381ab5952724719c982e4b8061fbda9ceae5b01f3e2a32beec30b5dd9f74f3f \ - --hash=sha256:fc2aa1f3abb564832c1bc289b1d83f491dd249e640b78a30e9cc1831ebbf4410 \ - --hash=sha256:b54c750ad88eba0e35b09c9286d6d2a1be8d8a6925b1d7e1e487df2396e74397 -opencv-python==4.1.2.30 \ - --hash=sha256:1a2d1801c038f055852bd2379186ca8b19b4ea24afb0b8410293bc802211579b \ - --hash=sha256:e793df2e12093b3a01006b5b27f321e306193c7a5c9e2a6c8bf652e1ad2d6a86 \ - --hash=sha256:ce7b1f25be04b04f2e678b2bf23a975137f77406dcee66a88a2daeb77cda3e76 \ - --hash=sha256:6c32d36f52a6e0c02d1ab0bb95223cb4dd5525a7e8292a747116126b3d34c578 \ - --hash=sha256:22c2ee5f97f85903bfb28c056566b2ecaa1d2f804b880ab39ebf94528a402992 \ - --hash=sha256:04bec0a6d3a00360a7fb769b755ff4489a4ac8291821b785151f63e6d8bb59ea \ - --hash=sha256:25127990671dc8bd27ae8b880d7a39f9aae863052a8fbebe8977c6ce8e5fc0c9 \ - --hash=sha256:73a467a78ffd902d2c0265ab6b2e2cdda423d61b3d08685e0c7d0b4572142ff1 \ - --hash=sha256:76de8a247970d150b1672c6646cda91217d562682e713721fc9b9bf1434553c4 \ - --hash=sha256:e6fc00ac42c800fad5fb3927cfb9bf4e60bb3302cb9805f45b826d5d2546119a \ - --hash=sha256:3cef82b6a1f748d2f4527f5932a86d54ebd10bd89f6cf59b003c36b1015055f7 \ - --hash=sha256:5f2cf5a0ab244a0a1dbe5ec426c277b55e06ac6a472ad61be77ef643a238cbd3 \ - --hash=sha256:982d4e80c14356098cde57a6c7d18fe0928a1c3118675bac2252ef38f152e1ab \ - --hash=sha256:919d5c3ec1a62258ba8c68b869b1056186e2355c4474739b199c295547e66cc1 \ - --hash=sha256:499a0413e7110a934ab56e635252a4c86f8be64de59f94a62318a7b895dc809e \ - --hash=sha256:1c7d235faef511aca7669f1aa650897b6c058dfde6412ea3fc58feb0fce78814 \ - --hash=sha256:c8119248457e909dcd7b598621ed1d139419d69377e8cb4e2b2c49c819de287d \ - --hash=sha256:9d025e6bf2989bcbc7744c26d8bd90c2629a92d8de3ba2416f62ce2a94615dd9 \ - --hash=sha256:eae543b3e9253ff702103333aabd87736b5ed5e46ab834d8e0b929f08f494dee \ - --hash=sha256:e2ffa3161b8662112f1880734e8b9549d0c9e818e59f652a9d1c5bf31e36586a \ - --hash=sha256:6183c9c7fab4590e0651bc941cde780988c3ad9889bd62de19d581a6f59523ea \ - --hash=sha256:bb59f98205cd81e29f45eed043cf0f98531486dc0b3f671c9e06fecf08f7ccef \ - --hash=sha256:d64428bf59ab4d27620b00a2ad6fea2b4d62016a17849c82a7517ec12db97d55 \ - --hash=sha256:5fec35916a6b9ce935f2e2806084303fd4e3fbb0c973a8db8f54b5aca54613cb \ - --hash=sha256:67a236db8db84d7fb0f6e127f360ce6669350ef324839132e22879ec90588dab \ - --hash=sha256:f0af656402b73ead2d9f593c2774c04b01e2d0c63e4f99e0dc2f3fde99be22b4 -opt-einsum==3.3.0; python_version >= "3.5" \ - --hash=sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147 \ - --hash=sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549 -packaging==21.3; python_version >= "3.7" and python_full_version >= "3.6.0" \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb -pandas==1.1.1; python_full_version >= "3.6.1" \ - --hash=sha256:8c9ec12c480c4d915e23ee9c8a2d8eba8509986f35f307771045c1294a2e5b73 \ - --hash=sha256:e4b6c98f45695799990da328e6fd7d6187be32752ed64c2f22326ad66762d179 \ - --hash=sha256:16ae070c47474008769fc443ac765ffd88c3506b4a82966e7a605592978896f9 \ - --hash=sha256:88930c74f69e97b17703600233c0eaf1f4f4dd10c14633d522724c5c1b963ec4 \ - --hash=sha256:fe6f1623376b616e03d51f0dd95afd862cf9a33c18cf55ce0ed4bbe1c4444391 \ - --hash=sha256:a81c4bf9c59010aa3efddbb6b9fc84a9b76dc0b4da2c2c2d50f06a9ef6ac0004 \ - --hash=sha256:1acc2bd7fc95e5408a4456897c2c2a1ae7c6acefe108d90479ab6d98d34fcc3d \ - --hash=sha256:84c101d0f7bbf0d9f1be9a2f29f6fcc12415442558d067164e50a56edfb732b4 \ - --hash=sha256:391db82ebeb886143b96b9c6c6166686c9a272d00020e4e39ad63b792542d9e2 \ - --hash=sha256:0366150fe8ee37ef89a45d3093e05026b5f895e42bbce3902ce3b6427f1b8471 \ - --hash=sha256:d9644ac996149b2a51325d48d77e25c911e01aa6d39dc1b64be679cd71f683ec \ - --hash=sha256:41675323d4fcdd15abde068607cad150dfe17f7d32290ee128e5fea98442bd09 \ - --hash=sha256:0246c67cbaaaac8d25fed8d4cf2d8897bd858f0e540e8528a75281cee9ac516d \ - --hash=sha256:01b1e536eb960822c5e6b58357cad8c4b492a336f4a5630bf0b598566462a578 \ - --hash=sha256:57c5f6be49259cde8e6f71c2bf240a26b071569cabc04c751358495d09419e56 \ - --hash=sha256:53328284a7bb046e2e885fd1b8c078bd896d7fc4575b915d4936f54984a2ba67 -pillow==9.0.0; python_version >= "3.7" \ - --hash=sha256:113723312215b25c22df1fdf0e2da7a3b9c357a7d24a93ebbe80bfda4f37a8d4 \ - --hash=sha256:bb47a548cea95b86494a26c89d153fd31122ed65255db5dcbc421a2d28eb3379 \ - --hash=sha256:31b265496e603985fad54d52d11970383e317d11e18e856971bdbb86af7242a4 \ - --hash=sha256:d154ed971a4cc04b93a6d5b47f37948d1f621f25de3e8fa0c26b2d44f24e3e8f \ - --hash=sha256:80fe92813d208ce8aa7d76da878bdc84b90809f79ccbad2a288e9bcbeac1d9bd \ - --hash=sha256:d5dcea1387331c905405b09cdbfb34611050cc52c865d71f2362f354faee1e9f \ - --hash=sha256:52abae4c96b5da630a8b4247de5428f593465291e5b239f3f843a911a3cf0105 \ - --hash=sha256:72c3110228944019e5f27232296c5923398496b28be42535e3b2dc7297b6e8b6 \ - --hash=sha256:97b6d21771da41497b81652d44191489296555b761684f82b7b544c49989110f \ - --hash=sha256:72f649d93d4cc4d8cf79c91ebc25137c358718ad75f99e99e043325ea7d56100 \ - --hash=sha256:7aaf07085c756f6cb1c692ee0d5a86c531703b6e8c9cae581b31b562c16b98ce \ - --hash=sha256:03b27b197deb4ee400ed57d8d4e572d2d8d80f825b6634daf6e2c18c3c6ccfa6 \ - --hash=sha256:a09a9d4ec2b7887f7a088bbaacfd5c07160e746e3d47ec5e8050ae3b2a229e9f \ - --hash=sha256:490e52e99224858f154975db61c060686df8a6b3f0212a678e5d2e2ce24675c9 \ - --hash=sha256:500d397ddf4bbf2ca42e198399ac13e7841956c72645513e8ddf243b31ad2128 \ - --hash=sha256:0ebd8b9137630a7bbbff8c4b31e774ff05bbb90f7911d93ea2c9371e41039b52 \ - --hash=sha256:fd0e5062f11cb3e730450a7d9f323f4051b532781026395c4323b8ad055523c4 \ - --hash=sha256:9f3b4522148586d35e78313db4db0df4b759ddd7649ef70002b6c3767d0fdeb7 \ - --hash=sha256:0b281fcadbb688607ea6ece7649c5d59d4bbd574e90db6cd030e9e85bde9fecc \ - --hash=sha256:b5050d681bcf5c9f2570b93bee5d3ec8ae4cf23158812f91ed57f7126df91762 \ - --hash=sha256:c2067b3bb0781f14059b112c9da5a91c80a600a97915b4f48b37f197895dd925 \ - --hash=sha256:2d16b6196fb7a54aff6b5e3ecd00f7c0bab1b56eee39214b2b223a9d938c50af \ - --hash=sha256:98cb63ca63cb61f594511c06218ab4394bf80388b3d66cd61d0b1f63ee0ea69f \ - --hash=sha256:bc462d24500ba707e9cbdef436c16e5c8cbf29908278af053008d9f689f56dee \ - --hash=sha256:3586e12d874ce2f1bc875a3ffba98732ebb12e18fb6d97be482bd62b56803281 \ - --hash=sha256:68e06f8b2248f6dc8b899c3e7ecf02c9f413aab622f4d6190df53a78b93d97a5 \ - --hash=sha256:6579f9ba84a3d4f1807c4aab4be06f373017fc65fff43498885ac50a9b47a553 \ - --hash=sha256:47f5cf60bcb9fbc46011f75c9b45a8b5ad077ca352a78185bd3e7f1d294b98bb \ - --hash=sha256:2fd8053e1f8ff1844419842fd474fc359676b2e2a2b66b11cc59f4fa0a301315 \ - --hash=sha256:6c5439bfb35a89cac50e81c751317faea647b9a3ec11c039900cd6915831064d \ - --hash=sha256:95545137fc56ce8c10de646074d242001a112a92de169986abd8c88c27566a05 \ - --hash=sha256:ee6e2963e92762923956fe5d3479b1fdc3b76c83f290aad131a2f98c3df0593e -protobuf==3.19.3; python_version >= "3.6" \ - --hash=sha256:1cb2ed66aac593adbf6dca4f07cd7ee7e2958b17bbc85b2cc8bc564ebeb258ec \ - --hash=sha256:898bda9cd37ec0c781b598891e86435de80c3bfa53eb483a9dac5a11ec93e942 \ - --hash=sha256:8ad761ef3be34c8bdc7285bec4b40372a8dad9e70cfbdc1793cd3cf4c1a4ce74 \ - --hash=sha256:2cddcbcc222f3144765ccccdb35d3621dc1544da57a9aca7e1944c1a4fe3db11 \ - --hash=sha256:6202df8ee8457cb00810c6e76ced480f22a1e4e02c899a14e7b6e6e1de09f938 \ - --hash=sha256:397d82f1c58b76445469c8c06b8dee1ff67b3053639d054f52599a458fac9bc6 \ - --hash=sha256:e54b8650e849ee8e95e481024bff92cf98f5ec61c7650cb838d928a140adcb63 \ - --hash=sha256:3bf3a07d17ba3511fe5fa916afb7351f482ab5dbab5afe71a7a384274a2cd550 \ - --hash=sha256:afa8122de8064fd577f49ae9eef433561c8ace97a0a7b969d56e8b1d39b5d177 \ - --hash=sha256:18c40a1b8721026a85187640f1786d52407dc9c1ba8ec38accb57a46e84015f6 \ - --hash=sha256:af7238849fa79285d448a24db686517570099739527a03c9c2971cce99cc5ae2 \ - --hash=sha256:e765e6dfbbb02c55e4d6d1145743401a84fc0b508f5a81b2c5a738cf86353139 \ - --hash=sha256:c781402ed5396ab56358d7b866d78c03a77cbc26ba0598d8bb0ac32084b1a257 \ - --hash=sha256:544fe9705189b249380fae07952d220c97f5c6c9372a6f936cc83a79601dcb70 \ - --hash=sha256:84bf3aa3efb00dbe1c7ed55da0f20800b0662541e582d7e62b3e1464d61ed365 \ - --hash=sha256:3f80a3491eaca767cdd86cb8660dc778f634b44abdb0dffc9b2a8e8d0cd617d0 \ - --hash=sha256:a9401d96552befcc7311f5ef8f0fa7dba0ef5fd805466b158b141606cd0ab6a8 \ - --hash=sha256:ef02d112c025e83db5d1188a847e358beab3e4bbfbbaf10eaf69e67359af51b2 \ - --hash=sha256:1291a0a7db7d792745c99d4657b4c5c4942695c8b1ac1bfb993a34035ec123f7 \ - --hash=sha256:49677e5e9c7ea1245a90c2e8a00d304598f22ea3aa0628f0e0a530a9e70665fa \ - --hash=sha256:df2ba379ee42427e8fcc6a0a76843bff6efb34ef5266b17f95043939b5e25b69 \ - --hash=sha256:2acd7ca329be544d1a603d5f13a4e34a3791c90d651ebaf130ba2e43ae5397c6 \ - --hash=sha256:b53519b2ebec70cfe24b4ddda21e9843f0918d7c3627a785393fb35d402ab8ad \ - --hash=sha256:8ceaf5fdb72c8e1fcb7be9f2b3b07482ce058a3548180c0bdd5c7e4ac5e14165 \ - --hash=sha256:f6d4b5b7595a57e69eb7314c67bef4a3c745b4caf91accaf72913d8e0635111b \ - --hash=sha256:d975a6314fbf5c524d4981e24294739216b5fb81ef3c14b86fb4b045d6690907 -pyarrow==7.0.0; python_version >= "3.7" \ - --hash=sha256:0f15213f380539c9640cb2413dc677b55e70f04c9e98cfc2e1d8b36c770e1036 \ - --hash=sha256:29c4e3b3be0b94d07ff4921a5e410fc690a3a066a850a302fc504de5fc638495 \ - --hash=sha256:8a9bfc8a016bcb8f9a8536d2fa14a890b340bc7a236275cd60fd4fb8b93ff405 \ - --hash=sha256:49d431ed644a3e8f53ae2bbf4b514743570b495b5829548db51610534b6eeee7 \ - --hash=sha256:aa6442a321c1e49480b3d436f7d631c895048a16df572cf71c23c6b53c45ed66 \ - --hash=sha256:f6b01a23cb401750092c6f7c4dcae67cd8fd6b99ae710e26f654f23508f25f25 \ - --hash=sha256:0f10928745c6ff66e121552731409803bed86c66ac79c64c90438b053b5242c5 \ - --hash=sha256:759090caa1474cafb5e68c93a9bd6cb45d8bb8e4f2cad2f1a0cc9439bae8ae88 \ - --hash=sha256:e3fe34bcfc28d9c4a747adc3926d2307a04c5c50b89155946739515ccfe5eab0 \ - --hash=sha256:040dce5345603e4e621bcf4f3b21f18d557852e7b15307e559bb14c8951c8714 \ - --hash=sha256:ed4b647c3345ae3463d341a9d28d0260cd302fb92ecf4e2e3e0f1656d6e0e55c \ - --hash=sha256:e7fecd5d5604f47e003f50887a42aee06cb8b7bf8e8bf7dc543a22331d9ba832 \ - --hash=sha256:1f2d00b892fe865e43346acb78761ba268f8bb1cbdba588816590abcb780ee3d \ - --hash=sha256:f439f7d77201681fd31391d189aa6b1322d27c9311a8f2fce7d23972471b02b6 \ - --hash=sha256:3e06b0e29ce1e32f219c670c6b31c33d25a5b8e29c7828f873373aab78bf30a5 \ - --hash=sha256:13dc05bcf79dbc1bd2de1b05d26eb64824b85883d019d81ca3c2eca9b68b5a44 \ - --hash=sha256:06183a7ff2b0c030ec0413fc4dc98abad8cf336c78c280a0b7f4bcbebb78d125 \ - --hash=sha256:702c5a9f960b56d03569eaaca2c1a05e8728f05ea1a2138ef64234aa53cd5884 \ - --hash=sha256:c7313038203df77ec4092d6363dbc0945071caa72635f365f2b1ae0dd7469865 \ - --hash=sha256:e87d1f7dc7a0b2ecaeb0c7a883a85710f5b5626d4134454f905571c04bc73d5a \ - --hash=sha256:ba69488ae25c7fde1a2ae9ea29daf04d676de8960ffd6f82e1e13ca945bb5861 \ - --hash=sha256:11a591f11d2697c751261c9d57e6e5b0d38fdc7f0cc57f4fd6edc657da7737df \ - --hash=sha256:6183c700877852dc0f8a76d4c0c2ffd803ba459e2b4a452e355c2d58d48cf39f \ - --hash=sha256:d1748154714b543e6ae8452a68d4af85caf5298296a7e5d4d00f1b3021838ac6 \ - --hash=sha256:fcc8f934c7847a88f13ec35feecffb61fe63bb7a3078bd98dd353762e969ce60 \ - --hash=sha256:759f59ac77b84878dbd54d06cf6df74ff781b8e7cf9313eeffbb5ec97b94385c \ - --hash=sha256:3d3e3f93ac2993df9c5e1922eab7bdea047b9da918a74e52145399bc1f0099a3 \ - --hash=sha256:306120af554e7e137895254a3b4741fad682875a5f6403509cd276de3fe5b844 \ - --hash=sha256:087769dac6e567d58d59b94c4f866b3356c00d3db5b261387ece47e7324c2150 \ - --hash=sha256:da656cad3c23a2ebb6a307ab01d35fce22f7850059cffafcb90d12590f8f4f38 -pyasn1-modules==0.2.8; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199 \ - --hash=sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405 \ - --hash=sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb \ - --hash=sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8 \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 \ - --hash=sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d \ - --hash=sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45 \ - --hash=sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4 \ - --hash=sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811 \ - --hash=sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed \ - --hash=sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0 \ - --hash=sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd -pyasn1==0.4.8; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") or python_full_version >= "3.6.0" and python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") \ - --hash=sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3 \ - --hash=sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf \ - --hash=sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00 \ - --hash=sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86 \ - --hash=sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7 \ - --hash=sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576 \ - --hash=sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12 \ - --hash=sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2 \ - --hash=sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359 \ - --hash=sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776 \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba -pyparsing==3.0.7; python_version >= "3.7" \ - --hash=sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484 \ - --hash=sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea -python-dateutil==2.8.2; python_full_version >= "3.6.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -pytz==2021.3; python_full_version >= "3.6.1" \ - --hash=sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c \ - --hash=sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326 -pyyaml==6.0; python_version >= "3.6" and python_full_version >= "3.6.0" \ - --hash=sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53 \ - --hash=sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c \ - --hash=sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc \ - --hash=sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b \ - --hash=sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 \ - --hash=sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513 \ - --hash=sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a \ - --hash=sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86 \ - --hash=sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f \ - --hash=sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92 \ - --hash=sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4 \ - --hash=sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293 \ - --hash=sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57 \ - --hash=sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c \ - --hash=sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0 \ - --hash=sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4 \ - --hash=sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9 \ - --hash=sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737 \ - --hash=sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d \ - --hash=sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b \ - --hash=sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba \ - --hash=sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34 \ - --hash=sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287 \ - --hash=sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78 \ - --hash=sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07 \ - --hash=sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b \ - --hash=sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174 \ - --hash=sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803 \ - --hash=sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3 \ - --hash=sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0 \ - --hash=sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb \ - --hash=sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c \ - --hash=sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2 -regex==2022.3.15; python_version >= "3.6" and python_full_version >= "3.6.0" \ - --hash=sha256:42eb13b93765c6698a5ab3bcd318d8c39bb42e5fa8a7fcf7d8d98923f3babdb1 \ - --hash=sha256:9beb03ff6fe509d6455971c2489dceb31687b38781206bcec8e68bdfcf5f1db2 \ - --hash=sha256:d0a5a1fdc9f148a8827d55b05425801acebeeefc9e86065c7ac8b8cc740a91ff \ - --hash=sha256:cb374a2a4dba7c4be0b19dc7b1adc50e6c2c26c3369ac629f50f3c198f3743a4 \ - --hash=sha256:c33ce0c665dd325200209340a88438ba7a470bd5f09f7424e520e1a3ff835b52 \ - --hash=sha256:04c09b9651fa814eeeb38e029dc1ae83149203e4eeb94e52bb868fadf64852bc \ - --hash=sha256:ab5d89cfaf71807da93c131bb7a19c3e19eaefd613d14f3bce4e97de830b15df \ - --hash=sha256:0e2630ae470d6a9f8e4967388c1eda4762706f5750ecf387785e0df63a4cc5af \ - --hash=sha256:df037c01d68d1958dad3463e2881d3638a0d6693483f58ad41001aa53a83fcea \ - --hash=sha256:940570c1a305bac10e8b2bc934b85a7709c649317dd16520471e85660275083a \ - --hash=sha256:7f63877c87552992894ea1444378b9c3a1d80819880ae226bb30b04789c0828c \ - --hash=sha256:3e265b388cc80c7c9c01bb4f26c9e536c40b2c05b7231fbb347381a2e1c8bf43 \ - --hash=sha256:058054c7a54428d5c3e3739ac1e363dc9347d15e64833817797dc4f01fb94bb8 \ - --hash=sha256:76435a92e444e5b8f346aed76801db1c1e5176c4c7e17daba074fbb46cb8d783 \ - --hash=sha256:174d964bc683b1e8b0970e1325f75e6242786a92a22cedb2a6ec3e4ae25358bd \ - --hash=sha256:6e1d8ed9e61f37881c8db383a124829a6e8114a69bd3377a25aecaeb9b3538f8 \ - --hash=sha256:b52771f05cff7517f7067fef19ffe545b1f05959e440d42247a17cd9bddae11b \ - --hash=sha256:673f5a393d603c34477dbad70db30025ccd23996a2d0916e942aac91cc42b31a \ - --hash=sha256:8923e1c5231549fee78ff9b2914fad25f2e3517572bb34bfaa3aea682a758683 \ - --hash=sha256:764e66a0e382829f6ad3bbce0987153080a511c19eb3d2f8ead3f766d14433ac \ - --hash=sha256:cd00859291658fe1fda48a99559fb34da891c50385b0bfb35b808f98956ef1e7 \ - --hash=sha256:aa2ce79f3889720b46e0aaba338148a1069aea55fda2c29e0626b4db20d9fcb7 \ - --hash=sha256:34bb30c095342797608727baf5c8aa122406aa5edfa12107b8e08eb432d4c5d7 \ - --hash=sha256:25ecb1dffc5e409ca42f01a2b2437f93024ff1612c1e7983bad9ee191a5e8828 \ - --hash=sha256:aa5eedfc2461c16a092a2fabc5895f159915f25731740c9152a1b00f4bcf629a \ - --hash=sha256:7d1a6e403ac8f1d91d8f51c441c3f99367488ed822bda2b40836690d5d0059f5 \ - --hash=sha256:3e4d710ff6539026e49f15a3797c6b1053573c2b65210373ef0eec24480b900b \ - --hash=sha256:0100f0ded953b6b17f18207907159ba9be3159649ad2d9b15535a74de70359d3 \ - --hash=sha256:f320c070dea3f20c11213e56dbbd7294c05743417cde01392148964b7bc2d31a \ - --hash=sha256:fc8c7958d14e8270171b3d72792b609c057ec0fa17d507729835b5cff6b7f69a \ - --hash=sha256:6ca6dcd17f537e9f3793cdde20ac6076af51b2bd8ad5fe69fa54373b17b48d3c \ - --hash=sha256:0214ff6dff1b5a4b4740cfe6e47f2c4c92ba2938fca7abbea1359036305c132f \ - --hash=sha256:a98ae493e4e80b3ded6503ff087a8492db058e9c68de371ac3df78e88360b374 \ - --hash=sha256:8b1cc70e31aacc152a12b39245974c8fccf313187eead559ee5966d50e1b5817 \ - --hash=sha256:b4829db3737480a9d5bfb1c0320c4ee13736f555f53a056aacc874f140e98f64 \ - --hash=sha256:303b15a3d32bf5fe5a73288c316bac5807587f193ceee4eb6d96ee38663789fa \ - --hash=sha256:dc7b7c16a519d924c50876fb152af661a20749dcbf653c8759e715c1a7a95b18 \ - --hash=sha256:ce3057777a14a9a1399b81eca6a6bfc9612047811234398b84c54aeff6d536ea \ - --hash=sha256:48081b6bff550fe10bcc20c01cf6c83dbca2ccf74eeacbfac240264775fd7ecf \ - --hash=sha256:dcbb7665a9db9f8d7642171152c45da60e16c4f706191d66a1dc47ec9f820aed \ - --hash=sha256:c155a1a80c5e7a8fa1d9bb1bf3c8a953532b53ab1196092749bafb9d3a7cbb60 \ - --hash=sha256:04b5ee2b6d29b4a99d38a6469aa1db65bb79d283186e8460542c517da195a8f6 \ - --hash=sha256:797437e6024dc1589163675ae82f303103063a0a580c6fd8d0b9a0a6708da29e \ - --hash=sha256:8afcd1c2297bc989dceaa0379ba15a6df16da69493635e53431d2d0c30356086 \ - --hash=sha256:0066a6631c92774391f2ea0f90268f0d82fffe39cb946f0f9c6b382a1c61a5e5 \ - --hash=sha256:b8248f19a878c72d8c0a785a2cd45d69432e443c9f10ab924c29adda77b324ae \ - --hash=sha256:8d1f3ea0d1924feb4cf6afb2699259f658a08ac6f8f3a4a806661c2dfcd66db1 \ - --hash=sha256:794a6bc66c43db8ed06698fc32aaeaac5c4812d9f825e9589e56f311da7becd9 \ - --hash=sha256:4d1445824944e642ffa54c4f512da17a953699c563a356d8b8cbdad26d3b7598 \ - --hash=sha256:f553a1190ae6cd26e553a79f6b6cfba7b8f304da2071052fa33469da075ea625 \ - --hash=sha256:75a5e6ce18982f0713c4bac0704bf3f65eed9b277edd3fb9d2b0ff1815943327 \ - --hash=sha256:f16cf7e4e1bf88fecf7f41da4061f181a6170e179d956420f84e700fb8a3fd6b \ - --hash=sha256:dad3991f0678facca1a0831ec1ddece2eb4d1dd0f5150acb9440f73a3b863907 \ - --hash=sha256:491fc754428514750ab21c2d294486223ce7385446f2c2f5df87ddbed32979ae \ - --hash=sha256:6504c22c173bb74075d7479852356bb7ca80e28c8e548d4d630a104f231e04fb \ - --hash=sha256:01c913cf573d1da0b34c9001a94977273b5ee2fe4cb222a5d5b320f3a9d1a835 \ - --hash=sha256:029e9e7e0d4d7c3446aa92474cbb07dafb0b2ef1d5ca8365f059998c010600e6 \ - --hash=sha256:947a8525c0a95ba8dc873191f9017d1b1e3024d4dc757f694e0af3026e34044a \ - --hash=sha256:591d4fba554f24bfa0421ba040cd199210a24301f923ed4b628e1e15a1001ff4 \ - --hash=sha256:b9809404528a999cf02a400ee5677c81959bc5cb938fdc696b62eb40214e3632 \ - --hash=sha256:f08a7e4d62ea2a45557f561eea87c907222575ca2134180b6974f8ac81e24f06 \ - --hash=sha256:5a86cac984da35377ca9ac5e2e0589bd11b3aebb61801204bd99c41fac516f0d \ - --hash=sha256:286908cbe86b1a0240a867aecfe26a439b16a1f585d2de133540549831f8e774 \ - --hash=sha256:7b7494df3fdcc95a1f76cf134d00b54962dd83189520fd35b8fcd474c0aa616d \ - --hash=sha256:5b1ceede92400b3acfebc1425937454aaf2c62cd5261a3fabd560c61e74f6da3 \ - --hash=sha256:0317eb6331146c524751354ebef76a7a531853d7207a4d760dfb5f553137a2a4 \ - --hash=sha256:9c144405220c5ad3f5deab4c77f3e80d52e83804a6b48b6bed3d81a9a0238e4c \ - --hash=sha256:5b2e24f3ae03af3d8e8e6d824c891fea0ca9035c5d06ac194a2700373861a15c \ - --hash=sha256:f2c53f3af011393ab5ed9ab640fa0876757498aac188f782a0c620e33faa2a3d \ - --hash=sha256:060f9066d2177905203516c62c8ea0066c16c7342971d54204d4e51b13dfbe2e \ - --hash=sha256:530a3a16e57bd3ea0dff5ec2695c09632c9d6c549f5869d6cf639f5f7153fb9c \ - --hash=sha256:78ce90c50d0ec970bd0002462430e00d1ecfd1255218d52d08b3a143fe4bde18 \ - --hash=sha256:c5adc854764732dbd95a713f2e6c3e914e17f2ccdc331b9ecb777484c31f73b6 \ - --hash=sha256:0a7b75cc7bb4cc0334380053e4671c560e31272c9d2d5a6c4b8e9ae2c9bd0f82 -requests-oauthlib==1.3.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" \ - --hash=sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a \ - --hash=sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d \ - --hash=sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc -requests==2.27.1; python_full_version >= "3.6.0" and python_version >= "3.6" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.6.0") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 -responses==0.18.0; python_version >= "3.7" \ - --hash=sha256:15c63ad16de13ee8e7182d99c9334f64fd81f1ee79f90748d527c28f7ca9dd51 \ - --hash=sha256:380cad4c1c1dc942e5e8a8eaae0b4d4edf708f4f010db8b7bcfafad1fcd254ff -rsa==4.8; python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") \ - --hash=sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb \ - --hash=sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17 -sacremoses==0.0.49; python_full_version >= "3.6.0" \ - --hash=sha256:33ca6d4e125271b9201cc7fdf7f03f3ffdd358ee6dd8079c0432811d82da5377 \ - --hash=sha256:c2ecd3a50d1c09a26253ad84b0b89e9e3a28a023455b72a2197cfeab27ff5141 -scikit-learn==1.0.2; python_version >= "3.7" \ - --hash=sha256:b5870959a5484b614f26d31ca4c17524b1b0317522199dc985c3b4256e030767 \ - --hash=sha256:da3c84694ff693b5b3194d8752ccf935a665b8b5edc33a283122f4273ca3e687 \ - --hash=sha256:75307d9ea39236cad7eea87143155eea24d48f93f3a2f9389c817f7019f00705 \ - --hash=sha256:f14517e174bd7332f1cca2c959e704696a5e0ba246eb8763e6c24876d8710049 \ - --hash=sha256:d9aac97e57c196206179f674f09bc6bffcd0284e2ba95b7fe0b402ac3f986023 \ - --hash=sha256:d93d4c28370aea8a7cbf6015e8a669cd5d69f856cc2aa44e7a590fb805bb5583 \ - --hash=sha256:85260fb430b795d806251dd3bb05e6f48cdc777ac31f2bcf2bc8bbed3270a8f5 \ - --hash=sha256:a053a6a527c87c5c4fa7bf1ab2556fa16d8345cf99b6c5a19030a4a7cd8fd2c0 \ - --hash=sha256:245c9b5a67445f6f044411e16a93a554edc1efdcce94d3fc0bc6a4b9ac30b752 \ - --hash=sha256:158faf30684c92a78e12da19c73feff9641a928a8024b4fa5ec11d583f3d8a87 \ - --hash=sha256:08ef968f6b72033c16c479c966bf37ccd49b06ea91b765e1cc27afefe723920b \ - --hash=sha256:16455ace947d8d9e5391435c2977178d0ff03a261571e67f627c8fee0f9d431a \ - --hash=sha256:2f3b453e0b149898577e301d27e098dfe1a36943f7bb0ad704d1e548efc3b448 \ - --hash=sha256:46f431ec59dead665e1370314dbebc99ead05e1c0a9df42f22d6a0e00044820f \ - --hash=sha256:ff3fa8ea0e09e38677762afc6e14cad77b5e125b0ea70c9bba1992f02c93b028 \ - --hash=sha256:9369b030e155f8188743eb4893ac17a27f81d28a884af460870c7c072f114243 \ - --hash=sha256:7d6b2475f1c23a698b48515217eb26b45a6598c7b1840ba23b3c5acece658dbb \ - --hash=sha256:285db0352e635b9e3392b0b426bc48c3b485512d3b4ac3c7a44ec2a2ba061e66 \ - --hash=sha256:5cb33fe1dc6f73dc19e67b264dbb5dde2a0539b986435fdd78ed978c14654830 \ - --hash=sha256:b1391d1a6e2268485a63c3073111fe3ba6ec5145fc957481cfd0652be571226d \ - --hash=sha256:bc3744dabc56b50bec73624aeca02e0def06b03cb287de26836e730659c5d29c \ - --hash=sha256:a999c9f02ff9570c783069f1074f06fe7386ec65b84c983db5aeb8144356a355 \ - --hash=sha256:7626a34eabbf370a638f32d1a3ad50526844ba58d63e3ab81ba91e2a7c6d037e \ - --hash=sha256:a90b60048f9ffdd962d2ad2fb16367a87ac34d76e02550968719eb7b5716fd10 \ - --hash=sha256:7a93c1292799620df90348800d5ac06f3794c1316ca247525fa31169f6d25855 \ - --hash=sha256:eabceab574f471de0b0eb3f2ecf2eee9f10b3106570481d007ed1c84ebf6d6a1 \ - --hash=sha256:55f2f3a8414e14fbee03782f9fe16cca0f141d639d2b1c1a36779fa069e1db57 \ - --hash=sha256:80095a1e4b93bd33261ef03b9bc86d6db649f988ea4dbcf7110d0cded8d7213d \ - --hash=sha256:fa38a1b9b38ae1fad2863eff5e0d69608567453fdfc850c992e6e47eb764e846 \ - --hash=sha256:ff746a69ff2ef25f62b36338c615dd15954ddc3ab8e73530237dd73235e76d62 \ - --hash=sha256:e174242caecb11e4abf169342641778f68e1bfaba80cd18acd6bc84286b9a534 \ - --hash=sha256:b54a62c6e318ddbfa7d22c383466d38d2ee770ebdb5ddb668d56a099f6eaf75f -scipy==1.6.1; python_version >= "3.7" \ - --hash=sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76 \ - --hash=sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092 \ - --hash=sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261 \ - --hash=sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced \ - --hash=sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78 \ - --hash=sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c \ - --hash=sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519 \ - --hash=sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345 \ - --hash=sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d \ - --hash=sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d \ - --hash=sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4 \ - --hash=sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf \ - --hash=sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67 \ - --hash=sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627 \ - --hash=sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0 \ - --hash=sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07 \ - --hash=sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4 \ - --hash=sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f \ - --hash=sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11 -sentencepiece==0.1.96 \ - --hash=sha256:cc969e6694fb27fba7cee2953f350804faf03913f25ae1ee713a7b8a1bc08018 \ - --hash=sha256:36e9ff61e7b67c5b7ee96733613622620b4802fc8cf188a4dbc1f355b03dde02 \ - --hash=sha256:e9e9fe8094ca57549d801e9a2017ac5c24108bbf485ea4f8994a72e8e96ee135 \ - --hash=sha256:b77d27f59d515c43b61745b8173fbe7c7b3014b14b3702a75bf1793471e7def6 \ - --hash=sha256:1dac8c2ad02b5ebc1179c0a14cbc7d7c6f4fd73d4dd51820626402d0aefc974e \ - --hash=sha256:e8ec5bb6777e2060e1499750c50e1b69dca5a0f80f90f2c66656c5f3e5244593 \ - --hash=sha256:99ea2d9db19e63a2d17d5dc64f9ace83fb9308a735be05a1aaf98eb4b496fba7 \ - --hash=sha256:aeb090ad462833df03af1debce4ae607a2766ef861f992003ad0c56d074ab805 \ - --hash=sha256:f8c90df663cd9759b2cf8dd29998b63140ac39e51ada2e739dc13bdac0b4f001 \ - --hash=sha256:26d20d713b3ba1b7a19205336afb1e93a4327c372b2f795e907b8dc2315ac92e \ - --hash=sha256:5388882bb24d083f6cc8cffc5c435f3694a7772b018e06ea6fd84d1044009efb \ - --hash=sha256:a92e1932ee8fd500680ccbe1bf53eb33228f4c9d6524ed6f300bcc80ac359f27 \ - --hash=sha256:bedf0355117fb4e9b1fc9fc92b4d5ee743a7d468be9f6196e3b94447710ea589 \ - --hash=sha256:4997c7ccf2ae462320250314aa5709a88d8a09fa271d073458a07bebf33f8e7c \ - --hash=sha256:a697257a2cd7581732d7741a8d32a06927f0311c3d277dbc47fa1043350c9d17 \ - --hash=sha256:ff7d752a7f82d87711ec1a95c2262cb74f98be5b457f0300d81a1aefe5be2a95 \ - --hash=sha256:3e61e0757e49c306fff78ea75d6b75773418fe22214b4a460959203be934e834 \ - --hash=sha256:ef59ba19340dc1d002ce5713b911c0ef23c577b08f8ed57998ee3c8e62c5bf6e \ - --hash=sha256:89c038da7f827a6e2ca4c73aeb4e4b25b99d981ce47dd61b04d446c8200cba1e \ - --hash=sha256:d954d25a8705f972e8bfc1dea5464d7e697dd6f4ade092f1a487387e6d6c829a \ - --hash=sha256:fd907a8f744e5337de7fc532dd800c4416b571ea47f8c3c66be10cd1bc67c925 \ - --hash=sha256:335bf84d72112cc91f3c3b691d61802fc963503b7772fd8280d20368048b8f3e \ - --hash=sha256:e811984b0908c14c56de7d8226fdd494d87a7ccb75af8ac3a07423037aaafc35 \ - --hash=sha256:8179785883b556cd517416cdbda6244745414b00ec83132cfe1d26000971f3ae \ - --hash=sha256:466e381f0a812da8fda97a9707498cef3210ea8385a3421bcbadcb5384063969 \ - --hash=sha256:f8cb24d8d0b2f8b7463815a59183eb81ec1d7a06e3217bed456063f3303eddfb \ - --hash=sha256:e88354b61f59dfdeb41023f7be8ae31dc627c2dc2dacbc2de8b2d82a0997135c \ - --hash=sha256:a336575463d75d3aac1f7e32470b8998643ccd9a73786bd726f6b0470520b6b4 \ - --hash=sha256:81bb77ba3651114943b2f8f77829cf764137dff06e38f4bf7fa43efea12c7f84 \ - --hash=sha256:eba0471ab0bb2e07ed06d91ecf5185d402c83d194155a41d8e2aa547d187712e \ - --hash=sha256:78e18d9106c36dcca929e18fd2c412378deac661d47fa3ee25defc55eef8a215 \ - --hash=sha256:b1c24c1d9405b2148184ff27c062493d5e3be5c144575f95b5a0d7c660a515af \ - --hash=sha256:940a6999c7d3f55e9d7b194fd5e1f41a7dbed26d3519fb95333216292a39599e \ - --hash=sha256:384148cead5cdab34a4d74fe1fb6a5a8abaafed25eaa4a7698b49dd9482e4c4e \ - --hash=sha256:3c703e68ea192e45b65c5d5836f6980849d828a18da4189899d7150fad82dc9e \ - --hash=sha256:d501713a8396193883aa526f48dc609f5f031a5df1afbafa561cf9ab492ffc76 \ - --hash=sha256:b8b1dd2712f8a7de5b4c8ec912e6c041d25750bf03e1ce325cdba43bae0944ae \ - --hash=sha256:d45e3f78e746aa161bc9f5a31c6a2839c512101113a4065f4d2e7a3ab8198d8c \ - --hash=sha256:5513298d62fe63dd0862d08a6eb52a9aa3537006f597f2386184e3f95bb88889 \ - --hash=sha256:dadccb2e49244b6e64b4527d13ec14d5e094a90b41cf9b963e457e64182f1941 \ - --hash=sha256:48c6d13b3bfff08060c138248e85df60f6fad11135ad7a8fc2ef6005aacca839 \ - --hash=sha256:9bdf097d5bd1d8ce42dfee51f6ff05f5578b96e48c6f6006aa4eff69edfa3639 -setuptools-scm==6.4.2; python_version >= "3.7" \ - --hash=sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4 \ - --hash=sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30 -six==1.15.0; python_full_version >= "3.6.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") \ - --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ - --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 -sklearn==0.0 \ - --hash=sha256:e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31 -tensorboard-data-server==0.6.1; python_version >= "3.6" \ - --hash=sha256:809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7 \ - --hash=sha256:fa8cef9be4fcae2f2363c88176638baf2da19c5ec90addb49b1cde05c95c88ee \ - --hash=sha256:d8237580755e58eff68d1f3abefb5b1e39ae5c8b127cc40920f9c4fb33f4b98a -tensorboard-plugin-wit==1.8.1; python_version >= "3.6" \ - --hash=sha256:ff26bdd583d155aa951ee3b152b3d0cffae8005dc697f72b44a8e8c2a77a8cbe -tensorboard==2.8.0; python_version >= "3.6" \ - --hash=sha256:65a338e4424e9079f2604923bdbe301792adce2ace1be68da6b3ddf005170def -tensorflow-estimator==2.5.0 \ - --hash=sha256:d1fe76dee8b1dcab865d807a0246da0a9c4a635b1eba6e9545bf216c3aad6955 -tensorflow==2.5.0 \ - --hash=sha256:7e1351ce05b897d5cf1042066b6929ca3f595a717849421ae92dbe8d6d2f1c74 \ - --hash=sha256:31a3ea994c336fc5a6ba0e6d61f131262b2c6dbff97e2b7473ff6da0cf9383f7 \ - --hash=sha256:c45059b42bca01ce441004abb965acf7838b40d12e036920063bd7ac540def9a \ - --hash=sha256:616bc8094cb289b3bd21eded2196b0dba65bce53bad112efcaf2acb6f7d9e6a5 \ - --hash=sha256:739d25273ccc10fedc74517de099bd5b16a274d1295fad6bfef834ad28cc3401 \ - --hash=sha256:68b70ca7df7f5f8fbe3d7240e937b3ea8b1a25e51710f60293e7edada00257a2 \ - --hash=sha256:c46b1d1b0eec54577d7ba545e3951c9dd0355ca05a8eb776c95d9a3e22e7be9c \ - --hash=sha256:34ab87aac9093de98cbba68d7e8dca9159c36acd06a03e5749c956c7ab08d9da \ - --hash=sha256:46f10a2edc694bb54a2d869a65b5a09705dab1874a89b529990a943416ad48aa \ - --hash=sha256:baebb9c95ef1815bb410317ad525dd3dbb26064fe95636b51486459b6536bc6e \ - --hash=sha256:1ea003f9e11508d0336c242a2a3bc73aea205dd5b31892c3e1d7f5d0f0e60c0a \ - --hash=sha256:4edec9b9f6ef8f1407762a3a6bd050173177f686d5ea6b59e91487b645173f73 -termcolor==1.1.0 \ - --hash=sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b -threadpoolctl==3.0.0; python_version >= "3.7" \ - --hash=sha256:4fade5b3b48ae4b1c30f200b28f39180371104fccc642e039e0f2435ec8cc211 \ - --hash=sha256:d03115321233d0be715f0d3a5ad1d6c065fe425ddc2d671ca8e45e9fd5d7a52a -tokenizers==0.11.6; python_full_version >= "3.6.0" \ - --hash=sha256:c24f3e0e69edf015efab6bea0a24d45eb19f477106d00a739c19d2a02f6085fc \ - --hash=sha256:1c5a786fe12a4c1782337abc818fc48ca84e07f8cb0eeab263a27fcd30f7fc6f \ - --hash=sha256:6f7b82aaedb24e0a4dcd8fe77a79de9a0acf43db8ae173cdb4eca1e767566b47 \ - --hash=sha256:c7d8ea3a05b593e5744c4ad0e6e2cbba6f82588c302d663855316c1861c09557 \ - --hash=sha256:3fde9a1e7d18caddff3ac13baf4e31235688b0db2ba42bbc8179dc878327560a \ - --hash=sha256:46a763d1f43f46448e41884356f105a2f067b6e573c7e0c67d8f93512304b22c \ - --hash=sha256:6bc5cc6d5b17bf8222049a2c97bcc117974793e37fb2e42b8fb04b2ef984d165 \ - --hash=sha256:3c1ad5d230bdd6a3f63bbffd16a9fdea6a049ceb6d225e4d70a2664853f40aaf \ - --hash=sha256:44697b08469dfe3265a851f87ad41c7f04efa511ada8182b6b08aa809765dcb8 \ - --hash=sha256:0975b9f06f982580909f9fa769baf58b806ab2d099daccc43dc95d60bf56817a \ - --hash=sha256:d0deaa700f9e442ed4bb4fe2c6482979b3709772bcce2dd7b89dc586ec39ce2e \ - --hash=sha256:34ac8450ad93e4dae1c72b7ad6c6a74d2941a68beb25df25d05b2b371267daba \ - --hash=sha256:38420ddd3b47d6f13be20bfecd928f4301c8cbebd1a752a7436c22fe01b3f6c4 \ - --hash=sha256:c08d5745fb5852adeeffc6bfbe13b77cd95d3f49e7e6129537858c5fb9b7142c \ - --hash=sha256:820a4cc3ef39c556c6f9495ce7cbd169098ca352e073ed3b34d6b74b53df2fbb \ - --hash=sha256:6c72383a918e9fef9c2bf4666a961f3b312361fb027165b4446ff333441ebf91 \ - --hash=sha256:6259833c189e36c29e84a853b9503028324a3b176a2ae3980c815456d326b652 \ - --hash=sha256:79074927fc9efaf13b3accd53246e50ade37550920077411ab55bd5ed4944153 \ - --hash=sha256:7ed928ac19a3397af6fe3716b313fb13dcaf54978f0fc159eeabaff8e35e5c92 \ - --hash=sha256:6840554a8cac1196db627d42edbf77f4b5decf6ce6fa9ca073efaaa2cff887a6 \ - --hash=sha256:216745a6e92eb52d99b56123e6fece59e0dcf7bd1444f42bee09e1f02c89bbec \ - --hash=sha256:e6d02076160d60966d6b2b320744affe6b846ee10a37d1c0222b6ca9e640bdb8 \ - --hash=sha256:7074162348a7784faccbea18cf814138483ce0c47eb17dc482cbc4bbbde8a00c \ - --hash=sha256:5c5ae264b75b7355db2bc3f34e8e3eb608fcca799ff9a109f3d61e4d9614f947 \ - --hash=sha256:d393eb6b79ab972e6ebede2aa330903913cf380f6fe975d64a92fca15b5d8579 \ - --hash=sha256:251978daef3b57257bd313df7ef705aacc6cd5831644f6e2e8a42e2c7b7c4a30 \ - --hash=sha256:fd3fccc801b7621eca8dfd876494fad0b00bd43fc73afdc1c11d6be3c9136f78 \ - --hash=sha256:3c1c6e10f655e0f57b9bb9a64ac4b7ea70d20a73f8013f8bd38d21d64d45d96a \ - --hash=sha256:809b506a6e9f2f6cba86cfe642c1d1e82cbd758574bdc1207efe07229d6fa4d4 \ - --hash=sha256:5b3829ad386747760e7d805c9ffd5cb5a9309679467029eea3162fb76c8c89dc \ - --hash=sha256:b9a34bd33d866862f45bfc4a409563132a0b6af5951e08f3ccfde36152cd7683 \ - --hash=sha256:e75efa0275665ca30536c75dc5b4d33492fc40ae40c90d9085bdcdb99e060044 \ - --hash=sha256:8afc3c76268cdef4567f84a19d9c06fdd697b22f5142d1af18254ec70703db7b \ - --hash=sha256:47878a49211f8df63f7ec7de62f13b1c65e68be501f6a98b28f4bbb8d3390f25 \ - --hash=sha256:0d4f67758f62d64410e86d548c2c38ca5e59310ca38c18e8239637213c49e2fb \ - --hash=sha256:468c3e3f414a532924fa277a58807e127a27d2a56b04113540ea755fc5ca9ba8 \ - --hash=sha256:b28966c68a2cdecd5120f4becea159eebe0335b8202e21e292eb381031026edc \ - --hash=sha256:562b2022faf0882586c915385620d1f11798fc1b32bac55353a530132369a6d0 -tomli==2.0.0; python_version >= "3.7" \ - --hash=sha256:b5bde28da1fed24b9bd1d4d2b8cba62300bfb4ec9a6187a957e8ddb9434c5224 \ - --hash=sha256:c292c34f58502a1eb2bbb9f5bbc9a5ebc37bee10ffb8c2d6bbdfa8eb13cc14e1 -torch==1.11.0; python_full_version >= "3.7.0" \ - --hash=sha256:62052b50fffc29ca7afc0c04ef8206b6f1ca9d10629cb543077e12967e8d0398 \ - --hash=sha256:866bfba29ac98dec35d893d8e17eaec149d0ac7a53be7baae5c98069897db667 \ - --hash=sha256:951640fb8db308a59d9b510e7d1ad910aff92913323bbe4bc75435347ddd346d \ - --hash=sha256:5d77b5ece78fdafa5c7f42995ff9474399d22571cd6b2de21a5d666306a2ff8c \ - --hash=sha256:b5a38682769b544c875ecc34bcb81fbad5c922139b61319aacffcfd8a32f528c \ - --hash=sha256:f82d77695a60626f2b7382d85bc566de8a6b3e50d32080755abc040db802e419 \ - --hash=sha256:b96654d42566080a134e784705f33f8536b3b95b5dcde357ed7879b1692a5f78 \ - --hash=sha256:8ee7c2e8d7f7020d5bfbc1bb91b9591044c26bbd0cee5e4f694cfd7ed8649260 \ - --hash=sha256:6860b1d1bf0bb0b67a6bd47f85a0e4c825b518eea13b5d6101999dbbcbd5bc0c \ - --hash=sha256:4322aa29f50da7f404db06cdf30896ea67b09f673af4a985afc7162bc897864d \ - --hash=sha256:e4d2e0ddd652f30e94cff750220324ec45705d4ecc69658f773b3cb1c7a28dd0 \ - --hash=sha256:34ce5ea4d8d85da32cdbadb50d4585106901e9f8a3527991daa70c13a09de1f7 \ - --hash=sha256:0ccc85cd06227a3edf809e2c795fd5762c3d4e8a38b5c9f744c6e7cf841361bb \ - --hash=sha256:c1554e49d74f1b2c3e7202d77056ba2dd7465437585bac64062b580f714a44e9 \ - --hash=sha256:58c7814502b1c129a650d7092033bbb0bbd64faf1a7941631aaa1aeaddc37570 \ - --hash=sha256:831cf588f01dda9409e75576741d2823453990dee2983d670f2584b37a01adf7 \ - --hash=sha256:44a1d02fd20f827f0f36dc26fdcfc45e793806a6ad52769a22260655a77a4369 \ - --hash=sha256:50fd9bf85c578c871c28f1cb0ace9dfc6024401c7f399b174fb0f370899f4454 \ - --hash=sha256:0e48af66ad755f0f9c5f2664028a414f57c49d6adc37e77e06fe0004da4edb61 -tqdm==4.63.0; python_full_version >= "3.6.0" \ - --hash=sha256:e643e071046f17139dea55b880dc9b33822ce21613b4a4f5ea57f202833dbc29 \ - --hash=sha256:1d9835ede8e394bb8c9dcbffbca02d717217113adc679236873eeaac5bc0b3cd -transformers==4.17.0; python_full_version >= "3.6.0" \ - --hash=sha256:5c7d1955693ebf4a69a0fa700b2ef730232d5d7c1528e15d44c1d473b38f57b8 \ - --hash=sha256:986fd59255460555b893a2b1827b9b8dd4e5cd6343e4409d18539208f69fb51b -typing-extensions==3.7.4.3; python_version < "3.8" and python_version >= "3.7" and python_full_version >= "3.7.0" \ - --hash=sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f \ - --hash=sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918 \ - --hash=sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c -urllib3==1.26.8; python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.7") \ - --hash=sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed \ - --hash=sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c -werkzeug==2.0.2; python_version >= "3.6" \ - --hash=sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f \ - --hash=sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a -wrapt==1.12.1 \ - --hash=sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7 -xxhash==3.0.0; python_version >= "3.6" \ - --hash=sha256:219cba13991fd73cf21a5efdafa5056f0ae0b8f79e5e0112967e3058daf73eea \ - --hash=sha256:3fcbb846af15eff100c412ae54f4974ff277c92eacd41f1ec7803a64fd07fa0c \ - --hash=sha256:5f475fa817ff7955fc118fc1ca29a6e691d329b7ff43f486af36c22dbdcff1db \ - --hash=sha256:9200a90f02ff6fd5fb63dea107842da71d8626d99b768fd31be44f3002c60bbe \ - --hash=sha256:a1403e4f551c9ef7bcef09af55f1adb169f13e4de253db0887928e5129f87af1 \ - --hash=sha256:fa7f6ca53170189a2268c83af0980e6c10aae69e6a5efa7ca989f89fff9f8c02 \ - --hash=sha256:5b63fbeb6d9c93d50ae0dc2b8a8b7f52f2de19e40fe9edc86637bfa5743b8ba2 \ - --hash=sha256:31f25efd10b6f1f6d5c34cd231986d8aae9a42e042daa90b783917f170807869 \ - --hash=sha256:807e88ed56e0fb347cb57d5bf44851f9878360fed700f2f63e622ef4eede87a5 \ - --hash=sha256:6d612c55a75d84d25898f6c5ad6a589aa556d1cb9af770b6c574ee62995167f6 \ - --hash=sha256:6f9309fcaf73f93df3101f03a61dc30644adff3e8d0044fff8c0c195dbbe63e2 \ - --hash=sha256:a2273fe40720e86346a17f06ef95cd60ee0d66ffce7cf55e390ef7350112b16d \ - --hash=sha256:fc6f3a334587c83c5ba56c19b254a97542ce1fc05ccfd66fbf568e6117718d65 \ - --hash=sha256:36cf410da5bfcca51ac3c2c51a3317dcd7af91f70fa61eca57fba39554f06ae3 \ - --hash=sha256:21752a3e9a2391d91bd51f4aa2fe028ae14ba6a8d37db9ebe00ccac10be5ac4a \ - --hash=sha256:322068a063ef156455a401ab720f0892f2d2dd1540c1a308e95a7cbf356df51c \ - --hash=sha256:2984fa9a880587c0bfa46d32717b2d209863ee68727ea0fc17f05fce25efa692 \ - --hash=sha256:6493dd938b360235da81b1c79d8cd048c4f11977e1159b4e744c54f98d3a7bb4 \ - --hash=sha256:fb9eca32f9b4acc7149db2c86f8108167b9929b7da1887d4287a90cfdb3ea53a \ - --hash=sha256:f4125e70e4e1d79992d81de837a0586aa0241665dbc5ce01b9c89330ed5cbb66 \ - --hash=sha256:583bea142569485bdb0c5900e804058c16edba1850b74519688c22bc546e6175 \ - --hash=sha256:4f3adf2891acc18abacd15113e9cbbefd30e5f4ecaae32c23e5486fc09c76ea5 \ - --hash=sha256:ed65a2671d380ae05262ce1e4ccc2b63f3c30506d207bf6fae8cd72be0ad65d4 \ - --hash=sha256:c604b3dcac9d37e3fceaa11884927024953260cc4224d9b89400d16e6cf34021 \ - --hash=sha256:1c6fc59e182506496544bc6d426bcf6077066ed1b40cfcd937f707cc06c7ef50 \ - --hash=sha256:5628375dbb76d33b93b44854a6c5433e2a78115e03ea2ae1bb74a34ab012a43f \ - --hash=sha256:687aa4373690f23a3f43cc23d81005304d284ff6c041bff1f967664ab6410f36 \ - --hash=sha256:9fa2100fb68b163e99370561c9e29ed37b9153fe99443600bea28829150eb0e4 \ - --hash=sha256:891d7651431a055f76fe2c8f86c593c3dede8ec5b10ca55e8ff5c9fdceb55f0b \ - --hash=sha256:197c32d7b62be02957ca31aa69febadf9c5a34ef953053ea16e2c72465bc450f \ - --hash=sha256:91fa4df41bda3cbec4084d9696028780b47128c1f8450d1ad9c3e4b6bf8b1f99 \ - --hash=sha256:4cd38b766fc40e9fe37b80112656d2e5a0cb2f9bc12e01b286353b5ecd2768e8 \ - --hash=sha256:4258ef78f5a7d1f9c595846134c7d81a868c74942051453258eb383498662d4d \ - --hash=sha256:b82b1cf4407ad908e04e864473cc3baa8e764c7bbebea959150764cc681a1611 \ - --hash=sha256:da4d91e28418469b29eed8635c08af28b588e51cd04288bed1ba1cf60f2d91f6 \ - --hash=sha256:48aab36169b0c00e586cb4eb2814ab8bfed686933126019906f917ff9a78c99e \ - --hash=sha256:0b0d522570c9ccea6203b3d96ac7f0cfc1d29e613640475d513be432545c48cc \ - --hash=sha256:d6054434ddb060685e86e7457f52d188b0886834baaa532f9f78b4f2b53cfd9b \ - --hash=sha256:cbf546ca5f5903ceeb46d9e6abf81f3a64edb95bb7dbe0f75283eec93a7eb2a0 \ - --hash=sha256:22704f23f23ccbe892cee3e7568c67f07ac25beaa2d1cff183274005d9d39149 \ - --hash=sha256:83198e223bcc4b2418b5282ac930e444738c2a33859dee4e570b25c8433d83a2 \ - --hash=sha256:3bcd4cd9b22293ea1c08822518fbb6d933c2960d66662d468a1945a45cace194 \ - --hash=sha256:f5dd4c37da3408d56ae942dc103f4ae3b43510daa4f5accd0a411fc6e914f10a \ - --hash=sha256:485f172abc03f78afd4f38dbdbb5665f59c5487126fa4c3181c6582cda4de03b \ - --hash=sha256:035248b3d7ab6deb7b247278494d293b9faccfa853078319d25e2926f566b2f8 \ - --hash=sha256:b30ae90c0cfd10ffe852c6b0f263253782eea74a8189d5f2440f6595c1e8047e \ - --hash=sha256:8fd203d8a3c013e679722047ef4f061f690c6cff49380622444bca4c30f3bf23 \ - --hash=sha256:6d60059aaef12a01c0cc24f1d7aaaab7933ae9f4b7adfd9ebbd37dc7ceac1745 \ - --hash=sha256:676c97bf7cc298b65eec0368c2cb5611d87a8e876930843311ca728f69292752 \ - --hash=sha256:2245c6e20e96e3f8fdfb61ad6bc5cde6ce8a1c2b93aa4a32a27bba7ab3aeaf12 \ - --hash=sha256:2ae926a52d020085a2d7f69d0e2155cbf819ae409f2e5dbb345dd40a6462de32 \ - --hash=sha256:0a2efdcb811be3edc520b78364c11a1e54f5d8e5db895a9ff2bcdd4a7ffa36a5 \ - --hash=sha256:885b3a851980056707ab99a2c19c35dfe2c2ba5f602066dbfcd8af45ea855760 \ - --hash=sha256:30b2d97aaf11fb122023f6b44ebb97c6955e9e00d7461a96415ca030b5ceb9c7 -yarl==1.7.2; python_version >= "3.6" \ - --hash=sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95 \ - --hash=sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b \ - --hash=sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05 \ - --hash=sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523 \ - --hash=sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63 \ - --hash=sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98 \ - --hash=sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125 \ - --hash=sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e \ - --hash=sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d \ - --hash=sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23 \ - --hash=sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245 \ - --hash=sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739 \ - --hash=sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72 \ - --hash=sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c \ - --hash=sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265 \ - --hash=sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d \ - --hash=sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656 \ - --hash=sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed \ - --hash=sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee \ - --hash=sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c \ - --hash=sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92 \ - --hash=sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d \ - --hash=sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b \ - --hash=sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c \ - --hash=sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa \ - --hash=sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d \ - --hash=sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1 \ - --hash=sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913 \ - --hash=sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63 \ - --hash=sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4 \ - --hash=sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba \ - --hash=sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41 \ - --hash=sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e \ - --hash=sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332 \ - --hash=sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52 \ - --hash=sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185 \ - --hash=sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986 \ - --hash=sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4 \ - --hash=sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b \ - --hash=sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1 \ - --hash=sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271 \ - --hash=sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576 \ - --hash=sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d \ - --hash=sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8 \ - --hash=sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d \ - --hash=sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6 \ - --hash=sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a \ - --hash=sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1 \ - --hash=sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0 \ - --hash=sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6 \ - --hash=sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832 \ - --hash=sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59 \ - --hash=sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8 \ - --hash=sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b \ - --hash=sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef \ - --hash=sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f \ - --hash=sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0 \ - --hash=sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1 \ - --hash=sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3 \ - --hash=sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746 \ - --hash=sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de \ - --hash=sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda \ - --hash=sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b \ - --hash=sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794 \ - --hash=sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac \ - --hash=sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec \ - --hash=sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe \ - --hash=sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8 \ - --hash=sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8 \ - --hash=sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d \ - --hash=sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58 \ - --hash=sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd -zipp==3.7.0; python_version >= "3.7" and python_version < "3.8" and python_full_version >= "3.6.0" \ - --hash=sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375 \ - --hash=sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d diff --git a/signtrack/Assets/Asset_col.png b/signtrack/Assets/Asset_col.png deleted file mode 100644 index ece46d3c6fbef1b8cc43f45f4573a5c3371aafab..0000000000000000000000000000000000000000 Binary files a/signtrack/Assets/Asset_col.png and /dev/null differ diff --git a/signtrack/Assets/Asset_ncol.png b/signtrack/Assets/Asset_ncol.png deleted file mode 100644 index ea943489f4414191efbd87264046b32ecd56091e..0000000000000000000000000000000000000000 Binary files a/signtrack/Assets/Asset_ncol.png and /dev/null differ diff --git a/signtrack/Assets/Bar.png b/signtrack/Assets/Bar.png deleted file mode 100644 index fb1f5ab415022ce13cafe7ee5408fb7cd04fd0e0..0000000000000000000000000000000000000000 Binary files a/signtrack/Assets/Bar.png and /dev/null differ diff --git a/signtrack/Assets/BottomBar.png b/signtrack/Assets/BottomBar.png deleted file mode 100644 index 4ad7e88957c23f31d542964c5ff08be5b75516ea..0000000000000000000000000000000000000000 Binary files a/signtrack/Assets/BottomBar.png and /dev/null differ diff --git a/signtrack/Assets/Circle.png b/signtrack/Assets/Circle.png deleted file mode 100644 index 7aecf6990dffb927a6fc643492617504c6eb6050..0000000000000000000000000000000000000000 Binary files a/signtrack/Assets/Circle.png and /dev/null differ diff --git a/signtrack/Assets/TopBar.png b/signtrack/Assets/TopBar.png deleted file mode 100644 index 10d04d7afbda889f12552a2abf026fe7b762761b..0000000000000000000000000000000000000000 Binary files a/signtrack/Assets/TopBar.png and /dev/null differ diff --git a/tests/SignTrack Bolt.py b/signtrack/SignTrack Bolt.py similarity index 92% rename from tests/SignTrack Bolt.py rename to signtrack/SignTrack Bolt.py index aa21b70fdce414a6a12767348beb16705d9c9ab0..6f85e9443cae2896c5f3b8ba0f9a35598ba511d0 100644 --- a/tests/SignTrack Bolt.py +++ b/signtrack/SignTrack Bolt.py @@ -20,10 +20,10 @@ pun = pipeline('ner', model=model, tokenizer=tokenizer) # The number of frames per sequence that the model has been trained on -seq_length = 24 +seq_length = 12 # Choose camera input -cap = cv2.VideoCapture(3) +cap = cv2.VideoCapture(0) # Resize camera input cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) @@ -37,16 +37,17 @@ signs = np.load(Packr.ModelIDUnpack()) mp_holistic = mp.solutions.holistic # Holistic model mp_drawing = mp.solutions.drawing_utils # Drawing utilities -# Setting up the model archtecture +# Setting up model parameters model = Sequential() model.add(LSTM(64, return_sequences=True, - activation='relu', input_shape=(24, 258))) + activation='relu', input_shape=(12, 258))) model.add(LSTM(128, return_sequences=True, activation='relu')) model.add(LSTM(64, return_sequences=False, activation='relu')) model.add(Dense(64, activation='relu')) model.add(Dense(32, activation='relu')) model.add(Dense(signs.shape[0], activation='softmax')) + # Loading the model model.load_weights("tmp/Insights/SignTrack.h5") @@ -154,11 +155,11 @@ def prob_vis(res, actions, input_frame): text = '' seq, sentence = [], [] HandsOnPrevFrames = [False] -threshold = 0.90 +threshold = 0.8 res = np.zeros(shape=signs.shape[0]) # Set mediapipe model holistic = mp_holistic.Holistic( - min_detection_confidence=0.5, min_tracking_confidence=0.5) + min_detection_confidence=0.8, min_tracking_confidence=0.8) while cap.isOpened(): @@ -188,7 +189,7 @@ while cap.isOpened(): if True in HandsOnPrevFrames[-5:]: if HandsOnScene(results): seq.append(keypoints) - seq = seq[-24:] + seq = seq[-seq_length:] text = grammar_correct((' '.join(sentence))) # Else if hands are not in the scene for the last 5 frames clear sequence data else: @@ -196,7 +197,7 @@ while cap.isOpened(): seq = [] res = np.zeros(shape=len(signs)) -# if the hands are not visible in teh last 44 frames clearthe sentence and process the displayed text +# if the hands are not visible in teh last 44 frames clear the sentence and process the displayed text if not True in HandsOnPrevFrames: if len(sentence) > 0: sentence = text.capitalize() @@ -216,12 +217,13 @@ while cap.isOpened(): text = (grammar_correct(text[1:-2])).capitalize() sentence = [] - # If there are 24 frames in seq then call the model to predict + # If there are 12 frames in seq then call the model to predict if len(seq) == seq_length: res = model.predict(np.expand_dims(seq, axis=0))[0] + """ - In case there is more than 65% the amount of needed data + In case there is more than 65% the nummber of needed data call the model to predict in a new version of seq with randomly duplicated frames """ @@ -230,7 +232,8 @@ while cap.isOpened(): missing = seq_length - len(seq) seqpros = seq for i in range(missing): - rand = random.randint(0, len(seq)-1) + rand = random.randint(2, len(seq)-2) + pedictedframe = np.divide(np.add(seq[rand],seq[rand+1]),2) seqpros.insert(rand, seq[rand]) res = model.predict(np.expand_dims(seqpros, axis=0))[0] seqpros = [] @@ -244,6 +247,10 @@ while cap.isOpened(): if len(sentence) > 0: if signs[np.argmax(res)] != sentence[-1]: sentence.append(signs[np.argmax(res)]) + else: + text = grammar_correct((' '.join(sentence))) + seq = [] + res = np.zeros(shape=len(signs)) # If it is empty just add the prediction in the sentence else: sentence.append(signs[np.argmax(res)]) diff --git a/signtrack/SignTrack_DataColect Bolt.py b/signtrack/SignTrack_DataColect Bolt.py new file mode 100644 index 0000000000000000000000000000000000000000..2e485bf2fd1afb40ced5c85ba3be722103f5eb17 --- /dev/null +++ b/signtrack/SignTrack_DataColect Bolt.py @@ -0,0 +1,223 @@ +# Importing dependancies + +import cv2 +import cvzone +import numpy as np +import os +import mediapipe as mp +from pathlib import Path +from essentials import mediapipe_detection, extract_keypoints, display_styled_landmarks + +# Dataset export location, Changing requires changes in Signtrack_Train +data_path = os.path.join('test') + +# Actions that we try to detect, Changing requires changes in Signtrack_Train +signs = np.array(["see"]) + +# Number of sequences to be collected for each action +no_datapacks = 6 + +# Frames per sequence, Changing requires changes in Signtrack_Train +seq_length = 24 + +# Choose camera input +cap = cv2.VideoCapture(1) + +# Resize camera input +cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) +cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) + +mp_holistic = mp.solutions.holistic # Holistic model +mp_drawing = mp.solutions.drawing_utils # Drawing utilities + + +def existing_data(sign): + ''' + Checks for existing data in the + dataset folder, to avoid errors while + saving new data. + ''' + existing_data = 0 + path = Path(data_path + '/' + sign) + if path.exists(): + existing_data = len(os.listdir(data_path + '/' + sign)) + return existing_data + + +for sign in signs: + ''' + Generates new empty forlders, + after taking into account existing data, + where new data wil be saved. + ''' + exdt = existing_data(sign) + for seq in range(no_datapacks * 2): + try: + os.makedirs(os.path.join(data_path, sign, + str((seq) + exdt))) + except: + pass + +# Import image assets and resize them to fit the output frame + +AssetCol = cv2.imread("Assets/Asset_col.png", cv2.IMREAD_UNCHANGED) +AssetCol = cv2.resize(AssetCol, (0, 0), None, 0.5, 0.5) + +AssetNCol = cv2.imread("Assets/Asset_ncol.png", cv2.IMREAD_UNCHANGED) +AssetNCol = cv2.resize(AssetNCol, (0, 0), None, 0.5, 0.5) + +AssetCircle = cv2.imread("Assets/Circle.png", cv2.IMREAD_UNCHANGED) +AssetCircle = cv2.resize(AssetCircle, (0, 0), None, 0.5, 0.5) + +AssetBar = cv2.imread("Assets/Bar.png", cv2.IMREAD_UNCHANGED) +AssetBar = cv2.resize(AssetBar, (0, 0), None, 0.5, 0.5) + + +def Graphics(img, sign, sequence, collecting): + ''' + Add the text and the assets to the final + display output + ''' + # Adds the circle around the number of sequence + # It is displayed at the 1/3 of frame's width (centered) + # And at the frame's heignt minus it's height + img = cvzone.overlayPNG( + img, AssetCircle, [round((wb/3-wc/2)/2), hb-hf]) + + # Adds the bar around the current collected sign + # It is displayed at the 1/4 of frame's width from the right (centered) + # Vertically, it is located at the lowest part of the picture + img = cvzone.overlayPNG( + img, AssetBar, [round(wb-wb/4-wc/2), hb-hf]) + + # This adds the text of the sequence counter + # Its location is exactly the same as of its circle around it + # Only difference is that its possition also changes + # regarding the number of letters + cv2.putText(img, str(sequence), (round((wb/3-wc/2)/2 - (len(str(sequence)))*7.5 + 28), + hb-hf+23), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 1, cv2.LINE_AA) + + # Prints the curent collected sign in the frame + # Its location is exactly the same as of its bar around it + # Only difference is that its possition also changes + # regarding the number of letters + cv2.putText(img, str(sign), (round(wb-wb/4-wc/2 + wbar/2-len(sign)*7.5), hb-hf+22), + cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 1, cv2.LINE_AA) + + # Displaying the collecting indication at the center + if collecting == True: + img = cvzone.overlayPNG( + img, AssetCol, [round(wb/2-wf/2), hb-hf]) + else: + img = cvzone.overlayPNG( + img, AssetNCol, [round(wb/2-wf/2), hb-hf]) + return img + + +# Setting mediapipe parameters amd initiaize a diferent model for the flipped image +''' +Mediapipe uses an LSTM model, just like SignTrack, that means that the results are made +based on a sequence of data. Thus when trying to make predictions on the flipped image it is +important to utilize a different version of the Mediapipe model, to avoid the model's confusion. +''' + + +holistic = mp_holistic.Holistic( + min_detection_confidence=0.5, min_tracking_confidence=0.5) + +holisticf = mp_holistic.Holistic( + min_detection_confidence=0.5, min_tracking_confidence=0.5) + + +# Loading the dimentions of cap and the assets and image +hf, wf, cf = AssetCol.shape +hc, wc, cc = AssetCircle.shape +hbar, wbar, cbar = AssetBar.shape +hb, wb, cb = (480, 640, 3) + +pics = [] + +def ProcessImg(pics,seq): + framenum=0 + for frame in pics: + + # Read camera feed + ret, frame = cap.read() + pics.append(frame) + + # Detect hand and pose landmarks + img, results = mediapipe_detection(frame, holistic) + + # Draw landmarks + display_styled_landmarks(img, results) + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, False)) + + img, results = mediapipe_detection(frame, holistic) + keypoints = extract_keypoints(results) + npy_path = os.path.join( + data_path, sign, str((2 * seq) + exdt), str(framenum)) + np.save(npy_path, keypoints) + + # Save the landmarks of the flipped image as an numpy array + frame_fliped = cv2.flip(frame, 1) + + img_flipped, results_flipped = mediapipe_detection( + frame_fliped, holisticf) + + keypoints_flipped = extract_keypoints(results_flipped) + npy_path_flipped = os.path.join( + data_path, sign, str((2 * seq + 1) + exdt), str(framenum)) + np.save(npy_path_flipped,keypoints_flipped) + framenum+=1 + if cv2.waitKey(10) & 0xFF == ord('q'): + break + pics = [] + + +# Loop through each sign +img=np.zeros((480, 640, 3), np.uint8) +for sign in signs: + exdt = existing_data(sign) - (no_datapacks * 2) + # Loop through sequences aka videos + for seq in range(no_datapacks): + + # Loop through video length aka sequence length + for frame_num in range(seq_length): + + # Read camera feed + ret, frame = cap.read() + pics.append(frame) + + # Detect hand and pose landmarks + img, results = mediapipe_detection(frame, holistic) + + # Draw landmarks + display_styled_landmarks(img, results) + + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, True)) + + + # Export keypoints + keypoints = extract_keypoints(results) + + if cv2.waitKey(10) & 0xFF == ord('q'): + break + + ''' + The wait logic, + If the collected sequence is on its first frame, + changes the apearence of the image accordingly. + ''' + + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, False)) + if cv2.waitKey(10) & 0xFF == ord('q'): + break + + ProcessImg(pics,seq) + pics.clear() + +cap.release() +cv2.destroyAllWindows() diff --git a/signtrack/SignTrack_DataColect.py b/signtrack/SignTrack_DataColect.py index 8b85d2c0b854d0faf83616907469ecf2ef34f04c..14f951911f31cfc30c8c6877cd3030a3d89030f2 100644 --- a/signtrack/SignTrack_DataColect.py +++ b/signtrack/SignTrack_DataColect.py @@ -1,25 +1,28 @@ # Importing dependancies - +import time import cv2 import cvzone import numpy as np import os import mediapipe as mp from pathlib import Path -from essentials import mediapipe_detection, extract_keypoints, display_styled_landmarks +from essentials import mediapipe_detection, extract_keypoints, display_styled_landmarks, HandsOnScene # Dataset export location, Changing requires changes in Signtrack_Train -data_path = os.path.join('Test') +data_path = os.path.join('test') # Actions that we try to detect, Changing requires changes in Signtrack_Train -signs = np.array(["no"]) +signs = np.array(["see"]) # Number of sequences to be collected for each action -no_datapacks = 5 +no_datapacks = 3 # Frames per sequence, Changing requires changes in Signtrack_Train seq_length = 24 +#Time between sessions (in seconds) +breaktime = 0.7 + # Choose camera input cap = cv2.VideoCapture(1) @@ -43,6 +46,14 @@ def existing_data(sign): existing_data = len(os.listdir(data_path + '/' + sign)) return existing_data +def delete_file(file_path): + try: + os.remove(file_path) + except FileNotFoundError: + pass + except PermissionError: + pass + for sign in signs: ''' @@ -60,6 +71,9 @@ for sign in signs: # Import image assets and resize them to fit the output frame +AssetErr = cv2.imread("Assets/error.png", cv2.IMREAD_UNCHANGED) +AssetErr = cv2.resize(AssetErr, (0, 0), None, 0.5, 0.5) + AssetCol = cv2.imread("Assets/Asset_col.png", cv2.IMREAD_UNCHANGED) AssetCol = cv2.resize(AssetCol, (0, 0), None, 0.5, 0.5) @@ -73,7 +87,7 @@ AssetBar = cv2.imread("Assets/Bar.png", cv2.IMREAD_UNCHANGED) AssetBar = cv2.resize(AssetBar, (0, 0), None, 0.5, 0.5) -def Graphics(img, sign, sequence, collecting): +def Graphics(img, sign, sequence, collecting, error): ''' Add the text and the assets to the final display output @@ -105,12 +119,17 @@ def Graphics(img, sign, sequence, collecting): cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 1, cv2.LINE_AA) # Displaying the collecting indication at the center - if collecting == True: + if collecting: img = cvzone.overlayPNG( img, AssetCol, [round(wb/2-wf/2), hb-hf]) else: - img = cvzone.overlayPNG( - img, AssetNCol, [round(wb/2-wf/2), hb-hf]) + + if error: + img = cvzone.overlayPNG( + img, AssetErr, [round(wb/2-wf/2), hb-hf]) + else: + img = cvzone.overlayPNG( + img, AssetNCol, [round(wb/2-wf/2), hb-hf]) return img @@ -138,14 +157,24 @@ def DataAugm(frame): keypoints_flipped = extract_keypoints(results_flipped) return keypoints_flipped +# Loading the dimentions of cap and the assets +hf, wf, cf = AssetCol.shape +hb, wb, cb = (480, 640, 3) +hc, wc, cc = AssetCircle.shape +hbar, wbar, cbar = AssetBar.shape + + +FailedSave = False # Loop through each sign for sign in signs: exdt = existing_data(sign) - (no_datapacks * 2) # Loop through sequences aka videos for seq in range(no_datapacks): + visframes = 0 + frame_num = 0 # Loop through video length aka sequence length - for frame_num in range(seq_length): + while True: # Read camera feed ret, frame = cap.read() @@ -153,27 +182,13 @@ for sign in signs: # Detect hand and pose landmarks img, results = mediapipe_detection(frame, holistic) - # Loading the dimentions of cap and the assets - hf, wf, cf = AssetCol.shape - hb, wb, cb = img.shape - hc, wc, cc = AssetCircle.shape - hbar, wbar, cbar = AssetBar.shape - # Draw landmarks display_styled_landmarks(img, results) - ''' - The wait logic, - If the collected sequence is on its first frame, - changes the apearence of the image accordingly. - ''' - if frame_num == 0: - cv2.imshow('SignTrack Data Collect', - Graphics(img, sign, seq, False)) - cv2.waitKey(700) - else: - cv2.imshow('SignTrack Data Collect', - Graphics(img, sign, seq, True)) + if HandsOnScene(results): + visframes +=1 + + # Export keypoints keypoints = extract_keypoints(results) @@ -188,6 +203,55 @@ for sign in signs: data_path, sign, str((2 * seq + 1) + exdt), str(frame_num)) np.save(npy_path_flipped, DataAugm(frame)) + ''' + The wait logic, + If the collected sequence is on its first frame, + changes the apearence of the image accordingly. + ''' + if frame_num == 0: + start_time = time.time() + + + while True: + # Read camera feed + ret, frame = cap.read() + img, results = mediapipe_detection(frame, holistic) + + # Draw landmarks + display_styled_landmarks(img, results) + + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, False, FailedSave)) + if cv2.waitKey(1) & 0xFF == ord('q'): + break + + elapsed_time = time.time() - start_time + if elapsed_time >= breaktime: + break + if frame_num == int(seq_length) - 1: + + if int(visframes) < 0.8 * int(seq_length): + for frame in range(seq_length): + npy_path = os.path.join( + data_path, sign, str((2 * seq) + exdt), (str(frame)+ '.npy')) + + delete_file(npy_path) + + npy_path_flipped = os.path.join( + data_path, sign, str((2 * seq + 1) + exdt), (str(frame)+ '.npy')) + delete_file(npy_path_flipped) + + frame_num = 0 + FailedSave = True + else: + FailedSave = False + break + + else: + cv2.imshow('SignTrack Data Collect', + Graphics(img, sign, seq, True, False)) + frame_num +=1 + if cv2.waitKey(10) & 0xFF == ord('q'): break diff --git a/signtrack/SignTrack_Train.py b/signtrack/SignTrack_Train.py index 653977ef897651776242d2dbfd00920c5f862af2..156d5963067eec2866e953e1eafbce92690d28bc 100644 --- a/signtrack/SignTrack_Train.py +++ b/signtrack/SignTrack_Train.py @@ -18,51 +18,141 @@ DATA_PATH = os.path.join('Dataset') MODEL_PATH = 'Insights/SignTrack.h5' # Signs that we try to detect -signs = np.array(['no', 'thank you', 'me', 'please', 'good', 'morning', 'want', 'go to', 'night', 'how', - 'hello', "what's up", 'yes', 'fine', 'see you later', 'like', 'afternoon', 'you', "sorry", 'goodbye']) +signs = np.array([ 'thank you', 'good', 'how', 'yes', + 'hello', "what's up", 'fine', 'you', 'no']) # Videos are going to be 24 frames in length sequence_length = 24 + # Creating a label map, where each sign is assigned to a specific numerical value label_map = {label: num for num, label in enumerate(signs)} +def rotate_point(point, angles): + x, y, z = point + rx, ry, rz = np.radians(angles) + + # Rotate around x-axis + y_prime = y * np.cos(rx) - z * np.sin(rx) + z_prime = y * np.sin(rx) + z * np.cos(rx) + + # Rotate around y-axis + x_prime = x * np.cos(ry) + z_prime * np.sin(ry) + z_prime = -x * np.sin(ry) + z_prime * np.cos(ry) + + # Rotate around z-axis + x_prime = x_prime * np.cos(rz) - y_prime * np.sin(rz) + y_prime = x_prime * np.sin(rz) + y_prime * np.cos(rz) + + return x_prime, y_prime, z_prime + + +def InSpaceR(lmdks):# lmdk short for landmark + lmdk=[] + + angle = (random.randint(-45,45), random.randint(-30,30), random.randint(-30,30)) + tmp = [] + randx = random.uniform(-0.15, 0.15) + randy = random.uniform(-0.15, 0.15) + randz = random.uniform(-0.15, 0.15) + + randscale = random.uniform(0.95, 1.05) + + for lmdk in lmdks: + #Defining a list for hand landmarks + hands = lmdk[:126] + hpoints = np.array_split(hands, 42) + + #Defining a list for pose landmarks + pose = lmdk[-132:] + ppoints = np.array_split(pose, 33) + + finalpoint = [] + # Rotating, moving and scaling each hand point + for point in hpoints: + x, y, z = rotate_point(point, angle) + finalpoint.append(randscale*x + randx) + finalpoint.append(randscale*y + randy) + finalpoint.append(randscale*z + randz) + + # Rotating, moving and scaling each pose point + for point in ppoints: + x,y,z = rotate_point(point[:3], angle) + finalpoint.append(randscale*x + randx) + finalpoint.append(randscale*y + randy) + finalpoint.append(randscale*z + randz) + # Each pose point contains an aditional value regarding it's visibility + finalpoint.append(point[-1:]) + + #Saving the results in a list + tmp.append(finalpoint) + return(np.asfarray(tmp)) + + # Importing data from dataset sequences, labels = [], [] for sign in signs: print('Importing data for {}...'.format(sign)) + dirs = os.listdir('Dataset/' + sign) - for dir in dirs: + impframe= False + + for i in range(230): window = [] window_aug = [] + for frame_num in range(sequence_length): res = np.load(os.path.join(DATA_PATH, sign, str( - dir), "{}.npy".format(frame_num))) - window.append(res) - window_aug.append(res) - # Randomly duplicating images in a copy of res + i), "{}.npy".format(frame_num))) + + if impframe is True: + window.append(res) + window_aug.append(res) + impframe= False + + else: + impframe= True + prevres = res + + # Randomly performing FastTrack Plus in a copy of res # Used for data augmentation - for i in range(round(sequence_length * 0.75)): - rand = random.randint(1, sequence_length-1) - window_aug[rand] = window_aug[rand-1] + randposs= random.randint(1, 2) + if randposs==2: + for i in range(round(12 * random.randrange(4,6)* 0.1)): + rand = random.randint(1, 12-2) + window_aug[rand] = np.divide(np.add(window[rand],window[rand+1]),2) + for i in range(2): + sequences.append(InSpaceR(window_aug)) + labels.append(label_map[sign]) + + sequences.append(window_aug) + labels.append(label_map[sign]) + + for i in range(12): + sequences.append(InSpaceR(window)) + labels.append(label_map[sign]) + sequences.append(window) labels.append(label_map[sign]) - sequences.append(window_aug) - labels.append(label_map[sign]) + + print('Data for {} imported \n'.format(sign)) X = np.array(sequences) y = to_categorical(labels).astype(int) +sequences = 0 +labels = 0 + log_dir = os.path.join('Insights') # Splitting dataset into Train_Set and Test_set -X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15) +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # Setting up model parameters model = Sequential() model.add(LSTM(64, return_sequences=True, - activation='relu', input_shape=(24, 258))) + activation='relu', input_shape=(12, 258))) model.add(LSTM(128, return_sequences=True, activation='relu')) model.add(LSTM(64, return_sequences=False, activation='relu')) model.add(Dense(64, activation='relu')) @@ -72,22 +162,20 @@ model.add(Dense(signs.shape[0], activation='softmax')) AutoTrain = model.compile(optimizer='Adam', loss='categorical_crossentropy') -loss = 1 +ModelAvailable = False -AutoTrain = model.fit(X_train, y_train, epochs=1) +AutoTrain = model.fit(X_train, y_train, epochs=5) -for i in range(250): - if AutoTrain.history['loss'][-1] >= 0.05: +for i in range(150): + if AutoTrain.history['loss'][-1] >= 0.03: AutoTrain = model.fit(X_train, y_train, epochs=1) - if AutoTrain.history['loss'][-1] < loss: - - try: - os.remove(MODEL_PATH) - except: - pass - + if AutoTrain.history['loss'][-1] == min(AutoTrain.history['loss']) : model.save(MODEL_PATH) + print('model saved') + ModelAvailable = True + elif ModelAvailable: + model.load_weights(MODEL_PATH) + print('model loaded') - loss = AutoTrain.history['loss'][-1] ModelPack(MODEL_PATH, signs) diff --git a/signtrack/__pycache__/Packr.cpython-37.pyc b/signtrack/__pycache__/Packr.cpython-37.pyc deleted file mode 100644 index 39fd4e7ed97fc066bce1538b63693640e91b431e..0000000000000000000000000000000000000000 Binary files a/signtrack/__pycache__/Packr.cpython-37.pyc and /dev/null differ diff --git a/signtrack/__pycache__/Packr.cpython-38.pyc b/signtrack/__pycache__/Packr.cpython-38.pyc deleted file mode 100644 index a9a8972ea79bd62f5ad0f961484c1093c435f9b4..0000000000000000000000000000000000000000 Binary files a/signtrack/__pycache__/Packr.cpython-38.pyc and /dev/null differ diff --git a/signtrack/__pycache__/__main__.cpython-37.pyc b/signtrack/__pycache__/__main__.cpython-37.pyc deleted file mode 100644 index 68acd3879f5d5f142512243ae6ba6800be08cc3e..0000000000000000000000000000000000000000 Binary files a/signtrack/__pycache__/__main__.cpython-37.pyc and /dev/null differ diff --git a/signtrack/__pycache__/essentials.cpython-37.pyc b/signtrack/__pycache__/essentials.cpython-37.pyc deleted file mode 100644 index bbdd701fd3836ee581a865f07acd3275a2d53c49..0000000000000000000000000000000000000000 Binary files a/signtrack/__pycache__/essentials.cpython-37.pyc and /dev/null differ diff --git a/signtrack/__pycache__/essentials.cpython-38.pyc b/signtrack/__pycache__/essentials.cpython-38.pyc deleted file mode 100644 index c1b7d8c038c033b5db23cdb57c38fbab18fc6a8d..0000000000000000000000000000000000000000 Binary files a/signtrack/__pycache__/essentials.cpython-38.pyc and /dev/null differ diff --git a/signtrack/essentials.py b/signtrack/essentials.py index 4b78e0fb4d73784a6b36ee08a267c2df236e54ca..87ffe6c1694d9ba65c3216c40884be45f7178338 100644 --- a/signtrack/essentials.py +++ b/signtrack/essentials.py @@ -12,6 +12,8 @@ phrases = {('how you'): 'how are you', ('fine'): "I'm fine", ('me fine me'): "I am fine", ('good.by.e'): "goodbye", + ("I'm i'm fine, thank you."): "I'm fine, thank you!", + ("I'm i'm fine"): "I'm fine", ('Good.by.e'): "goodbye"} @@ -75,7 +77,7 @@ def HandsOnScene(results): def extract_keypoints(results): """ - This is utilized to convert the keypoint results to a flat numpy array, that's easy to save and proccess + This is utilized to convert the keypoint results to a flat numpy array, thats is easy to save and proccess """ lh = np.array([[res.x, res.y, res.z] for res in results.left_hand_landmarks.landmark]).flatten( ) if results.left_hand_landmarks else np.zeros(21*3) @@ -89,7 +91,7 @@ def extract_keypoints(results): def grammar_correct(sentence): """ Grammar in sign language often differs from the on in written speech. - Using this function, the sentence is corrected from common grammatical + Using this function, the sentence is corrected from simple grammatical errors """ for key in phrases: diff --git a/signtrack/inSpace Engine.py b/signtrack/inSpace Engine.py new file mode 100644 index 0000000000000000000000000000000000000000..57bebb4990f68374bb1ced3d7b36dfbb46546832 --- /dev/null +++ b/signtrack/inSpace Engine.py @@ -0,0 +1,56 @@ +import numpy as np +import matplotlib.pyplot as plt + +landmarks = np.load('TestPose.npy') +hands = landmarks[:126] +pose = landmarks[-132:] + +def InSpace(point, angles): + x, y, z = point + rx, ry, rz = np.radians(angles) + + # Rotate around x-axis + y_prime = y * np.cos(rx) - z * np.sin(rx) + z_prime = y * np.sin(rx) + z * np.cos(rx) + + # Rotate around y-axis + x_prime = x * np.cos(ry) + z_prime * np.sin(ry) + z_prime = -x * np.sin(ry) + z_prime * np.cos(ry) + + # Rotate around z-axis + x_prime = x_prime * np.cos(rz) - y_prime * np.sin(rz) + y_prime = x_prime * np.sin(rz) + y_prime * np.cos(rz) + + return x_prime, y_prime, z_prime + +# Example usage +hpoints = np.array_split(hands, 42) +ppoints = np.array_split(pose, 33) +print(hpoints) +angle = (2, 0, 0) + + +plt.rcParams["figure.figsize"] = [10, 10] +plt.rcParams["figure.autolayout"] = True +fig = plt.figure() +ax = fig.add_subplot(projection="3d") +for i in range(0,20,20): + angle = (0, -90, 0) + for point in hpoints: + x, y, z = InSpace(point, angle) + ax.scatter(x, y, z, c='red', s=10) + for point in ppoints: + print(point[:4]) + x, y, z = InSpace(point[:3], angle) + ax.scatter(x, y, z, c='red', s=10) + +for point in hpoints: + x,y,z = point + ax.scatter(x, y, z, c='blue', s=10) +for point in ppoints: + x,y,z=(point[:3]) + ax.scatter(x, y, z, c='blue', s=10) + +x, y, z = (0,0,0) +ax.scatter(x, y, z, c='purple', s=10) +plt.show() diff --git a/signtrack/main copy.py b/signtrack/main copy.py deleted file mode 100644 index 57915c098ed23565a437f1f09b17432c832002ee..0000000000000000000000000000000000000000 --- a/signtrack/main copy.py +++ /dev/null @@ -1,246 +0,0 @@ -from re import I -from tensorflow.keras.models import Sequential -from tensorflow.keras.layers import LSTM, Dense -import cv2 -import cvzone -import shutil -import numpy as np -import mediapipe as mp -from essentials import mediapipe_detection, display_styled_landmarks, extract_keypoints, HandsOnScene, grammar_correct -import Packr -import random - - - -# The number of frames per sequence that the model has been trained on -seq_length = 24 - -# Choose camera input -cap = cv2.VideoCapture(1) - -# Resize camera input -cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) -cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) - -shutil.rmtree('tmp', True) # Erase previous temporary data - -# Unpacks the Model.Pack file and loads the features(signs) of the model -signs = np.load(Packr.ModelIDUnpack()) - -mp_holistic = mp.solutions.holistic # Holistic model -mp_drawing = mp.solutions.drawing_utils # Drawing utilities - -# Setting up the model archtecture -model = Sequential() -model.add(LSTM(64, return_sequences=True, - activation='relu', input_shape=(24, 258))) -model.add(LSTM(128, return_sequences=True, activation='relu')) -model.add(LSTM(64, return_sequences=False, activation='relu')) -model.add(Dense(64, activation='relu')) -model.add(Dense(32, activation='relu')) -model.add(Dense(signs.shape[0], activation='softmax')) - -# Loading the model -model.load_weights("tmp/Insights/SignTrack.h5") - -shutil.rmtree('tmp', True) # Erase temporary data - - -# Import image assets and resize them to fit the output frame -TopBar = cv2.imread("Assets/TopBar.png", cv2.IMREAD_UNCHANGED) -TopBar = cv2.resize(TopBar, (0, 0), None, 0.36, 0.42) - -BottomBar = cv2.imread("Assets/BottomBar.png", cv2.IMREAD_UNCHANGED) -BottomBar = cv2.resize(BottomBar, (0, 0), None, 0.36, 0.42) - - -def prob_vis(res, actions, input_frame): - ''' - It adds to the image a visualization - of the chances that an action apears in the - image - Returns the final image after the process - - ''' - output_frame = input_frame.copy() - resfin = {} - resfinshorted = {} - to_add = 0 - - # Create a dict including the possibility of each sign being in the frames as a percentage - for num, prob in enumerate(res): - resfin.update({round(prob*100, 2): actions[num]}) - - # Adding '--' for non existing values - to_add = 7 - len(resfin) - if 0 < to_add: - for i in range(to_add): - resfin.update({0.0001*i: '--'}) - - # Creating a shorted version of the dictionary with the most probable signs going first - for i in sorted(resfin, reverse=True): - resfinshorted[i] = resfin[i] - - # Initializing lists with the shorted signs and their probability of their presence - ResValShorted = list(resfinshorted.values()) - ResKeysShorted = list(resfinshorted.keys()) - - # Positioning the assets and the text on the image - """ - Adds the bottom bar on the frame, the position is calculated : - For the X axis: by calculating half of the width of the frame - minus half of the width of the bottom bar - For the Y axis: by calculating the height of the frame minus - the height of the bar while leavig 17 pixels space from the top - """ - - output_frame = cvzone.overlayPNG( - output_frame, BottomBar, [round(wc/2-wb/2), round(hc-hb-17)]) - - """ - Adds the top bar on the frame, the position is calculated : - For the X axis: by calculating half of the difference between - the width of the frame and the width of the bottom bar - For the Y axis: by calculating the height of the bar minus - the height of the bar devided by 1.5 - """ - output_frame = cvzone.overlayPNG( - output_frame, TopBar, [round((wc-wt)/2), round(ht-(ht/1.5))]) - - for i in range(6): - """ - Prints the 6 most probable signs on the top bar, - the position is calculated knowing that: - For the X axis: the distance between each window is - 105 pixels, while the first window is 52 pixels - from 0 and that each letter has aproximately a 5.25 - pixel width - The Y axis possition remains the same at 35 pixels - """ - cv2.putText(output_frame, str(ResValShorted[i]), ((round((52 + 105*(i)-len(ResValShorted[i])*5.25))), - 35), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 1, cv2.LINE_AA) - for i in range(3): - """ - Prints the probabilities of the 3 most probable signs - on the top bar, the position is calculated knowing that: - For the X : the distance between each window is - 105 pixels, while the first window is 46 from 0axis - The Y axis possition remains the same at 53 pixels - """ - cv2.putText(output_frame, str(round(ResKeysShorted[i], 1)), ((round((46 + 105*(i)))), - 53), cv2.FONT_HERSHEY_SIMPLEX, 0.3, (0, 0, 0), 1, cv2.LINE_AA) - - """ - Adds the sentence text on the bottom bar, the position is calculated by: - For the X axis: dividing the width of the frame by 6 - For the Y axis: calculating the difference of the height of the - frame and the height of the bar while keeping a 3 pixel - distance from the top of the bar - """ - cv2.putText(output_frame, text.capitalize(), (round(wc/6), hc-hb+3), - cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 0), 1, cv2.LINE_AA) - - return output_frame - - -# Initializing empty values -text = '' -seq, sentence = [], [] -HandsOnPrevFrames = [False] -threshold = 0.90 -res = np.zeros(shape=signs.shape[0]) -# Set mediapipe model -holistic = mp_holistic.Holistic( - min_detection_confidence=0.5, min_tracking_confidence=0.5) - - -while cap.isOpened(): - - # Read feed - ret, frame = cap.read() - - # Make detections - img, results = mediapipe_detection(frame, holistic) - - # Loading the dimentions of cap and the assets - hb, wb, cb = BottomBar.shape - hc, wc, cc = img.shape - ht, wt, ct = TopBar.shape - # Draw landmarks - display_styled_landmarks(img, results) - - # 2. Prediction logic - - # Creates a history the Hands on Scene results - HandsOnPrevFrames.append(HandsOnScene(results)) - HandsOnPrevFrames = HandsOnPrevFrames[-44:] - - keypoints = extract_keypoints(results) - - # If the hands are in the frame append the leypoints in seq to call the model to make predictions later - if True in HandsOnPrevFrames[-5:]: - if HandsOnScene(results): - seq.append(keypoints) - seq = seq[-24:] - text = grammar_correct((' '.join(sentence))) - # Else if hands are not in the scene for the last 5 frames clear sequence data - else: - text = grammar_correct((' '.join(sentence))) - seq = [] - res = np.zeros(shape=len(signs)) - -# if the hands are not visible in teh last 44 frames clear the sentence and process the displayed text - if not True in HandsOnPrevFrames: - if len(sentence) > 0: - # Capitalizing the needed letters - text = grammar_correct(text) - text = text.capitalize() - sentence = [] - - # If there are 24 frames in seq then call the model to predict - if len(seq) == seq_length: - res = model.predict(np.expand_dims(seq, axis=0))[0] - - """ - In case there is more than 65% the amount of needed data - call the model to predict in a new version of seq - with randomly duplicated frames - """ - - elif len(seq) >= seq_length * 0.65: - missing = seq_length - len(seq) - seqpros = seq - for i in range(missing): - rand = random.randint(0, len(seq)-1) - seqpros.insert(rand, seq[rand]) - res = model.predict(np.expand_dims(seqpros, axis=0))[0] - seqpros = [] - res = np.zeros(shape=len(signs)) - - # 3. Viz logic - - # If the probabillity of the most probable sign is more than the thershold - if res[np.argmax(res)] > threshold: - # Checking whether it is different than the last prediction then append it in the sentence - if len(sentence) > 0: - if signs[np.argmax(res)] != sentence[-1]: - sentence.append(signs[np.argmax(res)]) - # If it is empty just add the prediction in the sentence - else: - sentence.append(signs[np.argmax(res)]) - - # Keep the last 6 phrases in sentence - sentence = sentence[-6:] - - # Viaualizing probabilities - img = prob_vis(res, signs, img) - - # Display the final image - cv2.imshow('SignTrack', img) - - # End properly - if cv2.waitKey(10) & 0xFF == ord('q'): - break -# Terminating the window -cap.release() -cv2.destroyAllWindows() diff --git a/tests/Assets/Asset_col.png b/tests/Assets/Asset_col.png deleted file mode 100644 index ece46d3c6fbef1b8cc43f45f4573a5c3371aafab..0000000000000000000000000000000000000000 Binary files a/tests/Assets/Asset_col.png and /dev/null differ diff --git a/tests/Assets/Asset_ncol.png b/tests/Assets/Asset_ncol.png deleted file mode 100644 index ea943489f4414191efbd87264046b32ecd56091e..0000000000000000000000000000000000000000 Binary files a/tests/Assets/Asset_ncol.png and /dev/null differ diff --git a/tests/Assets/Bar.png b/tests/Assets/Bar.png deleted file mode 100644 index fb1f5ab415022ce13cafe7ee5408fb7cd04fd0e0..0000000000000000000000000000000000000000 Binary files a/tests/Assets/Bar.png and /dev/null differ diff --git a/tests/Assets/BottomBar.png b/tests/Assets/BottomBar.png deleted file mode 100644 index 4ad7e88957c23f31d542964c5ff08be5b75516ea..0000000000000000000000000000000000000000 Binary files a/tests/Assets/BottomBar.png and /dev/null differ diff --git a/tests/Assets/Circle.png b/tests/Assets/Circle.png deleted file mode 100644 index 7aecf6990dffb927a6fc643492617504c6eb6050..0000000000000000000000000000000000000000 Binary files a/tests/Assets/Circle.png and /dev/null differ diff --git a/tests/Assets/TopBar.png b/tests/Assets/TopBar.png deleted file mode 100644 index 10d04d7afbda889f12552a2abf026fe7b762761b..0000000000000000000000000000000000000000 Binary files a/tests/Assets/TopBar.png and /dev/null differ diff --git a/tests/SignTrack_Train.py b/tests/SignTrack_Train.py deleted file mode 100644 index 38bbcb305f9654527dd3b4185608de1dc5a52186..0000000000000000000000000000000000000000 --- a/tests/SignTrack_Train.py +++ /dev/null @@ -1,93 +0,0 @@ -from calendar import EPOCH -from tensorflow.keras.layers import LSTM, Dense -from tensorflow.keras.models import Sequential -from keras.callbacks import History -import numpy as np -import os -from matplotlib import pyplot as plt -from sklearn.model_selection import train_test_split -from tensorflow.keras.utils import to_categorical -import random - -from Packr import ModelPack - -# Path for exported data, numpy arrays -DATA_PATH = os.path.join('Dataset') - -# Path to save model -MODEL_PATH = 'Insights/SignTrack.h5' - -# Signs that we try to detect -signs = np.array(['no', 'thank you', 'me', 'please', 'good', 'morning', 'want', 'go to', 'night', 'how', - 'hello', "what's up", 'yes', 'fine', 'see you later', 'like', 'afternoon', 'you', "sorry", 'goodbye']) - -# Videos are going to be 24 frames in length -sequence_length = 24 - -# Creating a label map, where each sign is assigned to a specific numerical value -label_map = {label: num for num, label in enumerate(signs)} - -# Importing data from dataset -sequences, labels = [], [] -for sign in signs: - print('Importing data for {}...'.format(sign)) - dirs = os.listdir('Dataset/' + sign) - for dir in dirs: - window = [] - window_aug = [] - for frame_num in range(sequence_length): - res = np.load(os.path.join(DATA_PATH, sign, str( - dir), "{}.npy".format(frame_num))) - window.append(res) - window_aug.append(res) - # Randomly duplicating images in a copy of res - # Used for data augmentation - for i in range(round(sequence_length * 0.5)): - rand = random.randint(1, sequence_length-1) - window_aug[rand] = window_aug[rand-1] - sequences.append(window) - labels.append(label_map[sign]) - sequences.append(window_aug) - labels.append(label_map[sign]) - print('Data for {} imported \n'.format(sign)) - -X = np.array(sequences) -y = to_categorical(labels).astype(int) - -log_dir = os.path.join('Insights') - -# Splitting dataset into Train_Set and Test_set -X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15) - -# Setting up model parameters -model = Sequential() -model.add(LSTM(64, return_sequences=True, - activation='relu', input_shape=(24, 258))) -model.add(LSTM(128, return_sequences=True, activation='relu')) -model.add(LSTM(64, return_sequences=False, activation='relu')) -model.add(Dense(64, activation='relu')) -model.add(Dense(32, activation='relu')) -model.add(Dense(signs.shape[0], activation='softmax')) - - -AutoTrain = model.compile(optimizer='Adam', loss='categorical_crossentropy') - -loss = 1 - -AutoTrain = model.fit(X_train, y_train, epochs=1) - -for i in range(250): - if AutoTrain.history['loss'][-1] >= 0.04: - AutoTrain = model.fit(X_train, y_train, epochs=1) - if AutoTrain.history['loss'][-1] < loss: - - try: - os.remove(MODEL_PATH) - except: - pass - - model.save(MODEL_PATH) - - loss = AutoTrain.history['loss'][-1] - -ModelPack(MODEL_PATH, signs) diff --git a/tests/__pycache__/Packr.cpython-37.pyc b/tests/__pycache__/Packr.cpython-37.pyc deleted file mode 100644 index 7e43eddda5ad52ddcbd92c947c773a0270ca9433..0000000000000000000000000000000000000000 Binary files a/tests/__pycache__/Packr.cpython-37.pyc and /dev/null differ diff --git a/tests/__pycache__/Packr.cpython-38.pyc b/tests/__pycache__/Packr.cpython-38.pyc deleted file mode 100644 index 3177971153458590091a8baf1dcb994c27422c0c..0000000000000000000000000000000000000000 Binary files a/tests/__pycache__/Packr.cpython-38.pyc and /dev/null differ diff --git a/tests/__pycache__/essentials.cpython-37.pyc b/tests/__pycache__/essentials.cpython-37.pyc deleted file mode 100644 index 90c6bc1d285d646edd19bcb178ace3f29abc209a..0000000000000000000000000000000000000000 Binary files a/tests/__pycache__/essentials.cpython-37.pyc and /dev/null differ diff --git a/tests/__pycache__/essentials.cpython-38.pyc b/tests/__pycache__/essentials.cpython-38.pyc deleted file mode 100644 index 9f376cce13f161a94643f4d039a8fe48770e54bd..0000000000000000000000000000000000000000 Binary files a/tests/__pycache__/essentials.cpython-38.pyc and /dev/null differ diff --git a/tests/model.pack b/tests/model.pack deleted file mode 100644 index 0c5d4cafdfced3a552cdeb91a76a339f775de85c..0000000000000000000000000000000000000000 Binary files a/tests/model.pack and /dev/null differ