diff --git a/data/Medical_insurance.csv b/data/Medical_insurance.csv new file mode 100644 index 0000000..7e9cc0f --- /dev/null +++ b/data/Medical_insurance.csv @@ -0,0 +1,2773 @@ +age,sex,bmi,children,smoker,region,charges +19,female,27.9,0,yes,southwest,16884.924 +18,male,33.77,1,no,southeast,1725.5523 +28,male,33,3,no,southeast,4449.462 +33,male,22.705,0,no,northwest,21984.47061 +32,male,28.88,0,no,northwest,3866.8552 +31,female,25.74,0,no,southeast,3756.6216 +46,female,33.44,1,no,southeast,8240.5896 +37,female,27.74,3,no,northwest,7281.5056 +37,male,29.83,2,no,northeast,6406.4107 +60,female,25.84,0,no,northwest,28923.13692 +25,male,26.22,0,no,northeast,2721.3208 +62,female,26.29,0,yes,southeast,27808.7251 +23,male,34.4,0,no,southwest,1826.843 +56,female,39.82,0,no,southeast,11090.7178 +27,male,42.13,0,yes,southeast,39611.7577 +19,male,24.6,1,no,southwest,1837.237 +52,female,30.78,1,no,northeast,10797.3362 +23,male,23.845,0,no,northeast,2395.17155 +56,male,40.3,0,no,southwest,10602.385 +30,male,35.3,0,yes,southwest,36837.467 +60,female,36.005,0,no,northeast,13228.84695 +30,female,32.4,1,no,southwest,4149.736 +18,male,34.1,0,no,southeast,1137.011 +34,female,31.92,1,yes,northeast,37701.8768 +37,male,28.025,2,no,northwest,6203.90175 +59,female,27.72,3,no,southeast,14001.1338 +63,female,23.085,0,no,northeast,14451.83515 +55,female,32.775,2,no,northwest,12268.63225 +23,male,17.385,1,no,northwest,2775.19215 +31,male,36.3,2,yes,southwest,38711 +22,male,35.6,0,yes,southwest,35585.576 +18,female,26.315,0,no,northeast,2198.18985 +19,female,28.6,5,no,southwest,4687.797 +63,male,28.31,0,no,northwest,13770.0979 +28,male,36.4,1,yes,southwest,51194.55914 +19,male,20.425,0,no,northwest,1625.43375 +62,female,32.965,3,no,northwest,15612.19335 +26,male,20.8,0,no,southwest,2302.3 +35,male,36.67,1,yes,northeast,39774.2763 +60,male,39.9,0,yes,southwest,48173.361 +24,female,26.6,0,no,northeast,3046.062 +31,female,36.63,2,no,southeast,4949.7587 +41,male,21.78,1,no,southeast,6272.4772 +37,female,30.8,2,no,southeast,6313.759 +38,male,37.05,1,no,northeast,6079.6715 +55,male,37.3,0,no,southwest,20630.28351 +18,female,38.665,2,no,northeast,3393.35635 +28,female,34.77,0,no,northwest,3556.9223 +60,female,24.53,0,no,southeast,12629.8967 +36,male,35.2,1,yes,southeast,38709.176 +18,female,35.625,0,no,northeast,2211.13075 +21,female,33.63,2,no,northwest,3579.8287 +48,male,28,1,yes,southwest,23568.272 +36,male,34.43,0,yes,southeast,37742.5757 +40,female,28.69,3,no,northwest,8059.6791 +58,male,36.955,2,yes,northwest,47496.49445 +58,female,31.825,2,no,northeast,13607.36875 +18,male,31.68,2,yes,southeast,34303.1672 +53,female,22.88,1,yes,southeast,23244.7902 +34,female,37.335,2,no,northwest,5989.52365 +43,male,27.36,3,no,northeast,8606.2174 +25,male,33.66,4,no,southeast,4504.6624 +64,male,24.7,1,no,northwest,30166.61817 +28,female,25.935,1,no,northwest,4133.64165 +20,female,22.42,0,yes,northwest,14711.7438 +19,female,28.9,0,no,southwest,1743.214 +61,female,39.1,2,no,southwest,14235.072 +40,male,26.315,1,no,northwest,6389.37785 +40,female,36.19,0,no,southeast,5920.1041 +28,male,23.98,3,yes,southeast,17663.1442 +27,female,24.75,0,yes,southeast,16577.7795 +31,male,28.5,5,no,northeast,6799.458 +53,female,28.1,3,no,southwest,11741.726 +58,male,32.01,1,no,southeast,11946.6259 +44,male,27.4,2,no,southwest,7726.854 +57,male,34.01,0,no,northwest,11356.6609 +29,female,29.59,1,no,southeast,3947.4131 +21,male,35.53,0,no,southeast,1532.4697 +22,female,39.805,0,no,northeast,2755.02095 +41,female,32.965,0,no,northwest,6571.02435 +31,male,26.885,1,no,northeast,4441.21315 +45,female,38.285,0,no,northeast,7935.29115 +22,male,37.62,1,yes,southeast,37165.1638 +48,female,41.23,4,no,northwest,11033.6617 +37,female,34.8,2,yes,southwest,39836.519 +45,male,22.895,2,yes,northwest,21098.55405 +57,female,31.16,0,yes,northwest,43578.9394 +56,female,27.2,0,no,southwest,11073.176 +46,female,27.74,0,no,northwest,8026.6666 +55,female,26.98,0,no,northwest,11082.5772 +21,female,39.49,0,no,southeast,2026.9741 +53,female,24.795,1,no,northwest,10942.13205 +59,male,29.83,3,yes,northeast,30184.9367 +35,male,34.77,2,no,northwest,5729.0053 +64,female,31.3,2,yes,southwest,47291.055 +28,female,37.62,1,no,southeast,3766.8838 +54,female,30.8,3,no,southwest,12105.32 +55,male,38.28,0,no,southeast,10226.2842 +56,male,19.95,0,yes,northeast,22412.6485 +38,male,19.3,0,yes,southwest,15820.699 +41,female,31.6,0,no,southwest,6186.127 +30,male,25.46,0,no,northeast,3645.0894 +18,female,30.115,0,no,northeast,21344.8467 +61,female,29.92,3,yes,southeast,30942.1918 +34,female,27.5,1,no,southwest,5003.853 +20,male,28.025,1,yes,northwest,17560.37975 +19,female,28.4,1,no,southwest,2331.519 +26,male,30.875,2,no,northwest,3877.30425 +29,male,27.94,0,no,southeast,2867.1196 +63,male,35.09,0,yes,southeast,47055.5321 +54,male,33.63,1,no,northwest,10825.2537 +55,female,29.7,2,no,southwest,11881.358 +37,male,30.8,0,no,southwest,4646.759 +21,female,35.72,0,no,northwest,2404.7338 +52,male,32.205,3,no,northeast,11488.31695 +60,male,28.595,0,no,northeast,30259.99556 +58,male,49.06,0,no,southeast,11381.3254 +29,female,27.94,1,yes,southeast,19107.7796 +49,female,27.17,0,no,southeast,8601.3293 +37,female,23.37,2,no,northwest,6686.4313 +44,male,37.1,2,no,southwest,7740.337 +18,male,23.75,0,no,northeast,1705.6245 +20,female,28.975,0,no,northwest,2257.47525 +44,male,31.35,1,yes,northeast,39556.4945 +47,female,33.915,3,no,northwest,10115.00885 +26,female,28.785,0,no,northeast,3385.39915 +19,female,28.3,0,yes,southwest,17081.08 +52,female,37.4,0,no,southwest,9634.538 +32,female,17.765,2,yes,northwest,32734.1863 +38,male,34.7,2,no,southwest,6082.405 +59,female,26.505,0,no,northeast,12815.44495 +61,female,22.04,0,no,northeast,13616.3586 +53,female,35.9,2,no,southwest,11163.568 +19,male,25.555,0,no,northwest,1632.56445 +20,female,28.785,0,no,northeast,2457.21115 +22,female,28.05,0,no,southeast,2155.6815 +19,male,34.1,0,no,southwest,1261.442 +22,male,25.175,0,no,northwest,2045.68525 +54,female,31.9,3,no,southeast,27322.73386 +22,female,36,0,no,southwest,2166.732 +34,male,22.42,2,no,northeast,27375.90478 +26,male,32.49,1,no,northeast,3490.5491 +34,male,25.3,2,yes,southeast,18972.495 +29,male,29.735,2,no,northwest,18157.876 +30,male,28.69,3,yes,northwest,20745.9891 +29,female,38.83,3,no,southeast,5138.2567 +46,male,30.495,3,yes,northwest,40720.55105 +51,female,37.73,1,no,southeast,9877.6077 +53,female,37.43,1,no,northwest,10959.6947 +19,male,28.4,1,no,southwest,1842.519 +35,male,24.13,1,no,northwest,5125.2157 +48,male,29.7,0,no,southeast,7789.635 +32,female,37.145,3,no,northeast,6334.34355 +42,female,23.37,0,yes,northeast,19964.7463 +40,female,25.46,1,no,northeast,7077.1894 +44,male,39.52,0,no,northwest,6948.7008 +48,male,24.42,0,yes,southeast,21223.6758 +18,male,25.175,0,yes,northeast,15518.18025 +30,male,35.53,0,yes,southeast,36950.2567 +50,female,27.83,3,no,southeast,19749.38338 +42,female,26.6,0,yes,northwest,21348.706 +18,female,36.85,0,yes,southeast,36149.4835 +54,male,39.6,1,no,southwest,10450.552 +32,female,29.8,2,no,southwest,5152.134 +37,male,29.64,0,no,northwest,5028.1466 +47,male,28.215,4,no,northeast,10407.08585 +20,female,37,5,no,southwest,4830.63 +32,female,33.155,3,no,northwest,6128.79745 +19,female,31.825,1,no,northwest,2719.27975 +27,male,18.905,3,no,northeast,4827.90495 +63,male,41.47,0,no,southeast,13405.3903 +49,male,30.3,0,no,southwest,8116.68 +18,male,15.96,0,no,northeast,1694.7964 +35,female,34.8,1,no,southwest,5246.047 +24,female,33.345,0,no,northwest,2855.43755 +63,female,37.7,0,yes,southwest,48824.45 +38,male,27.835,2,no,northwest,6455.86265 +54,male,29.2,1,no,southwest,10436.096 +46,female,28.9,2,no,southwest,8823.279 +41,female,33.155,3,no,northeast,8538.28845 +58,male,28.595,0,no,northwest,11735.87905 +18,female,38.28,0,no,southeast,1631.8212 +22,male,19.95,3,no,northeast,4005.4225 +44,female,26.41,0,no,northwest,7419.4779 +44,male,30.69,2,no,southeast,7731.4271 +36,male,41.895,3,yes,northeast,43753.33705 +26,female,29.92,2,no,southeast,3981.9768 +30,female,30.9,3,no,southwest,5325.651 +41,female,32.2,1,no,southwest,6775.961 +29,female,32.11,2,no,northwest,4922.9159 +61,male,31.57,0,no,southeast,12557.6053 +36,female,26.2,0,no,southwest,4883.866 +25,male,25.74,0,no,southeast,2137.6536 +56,female,26.6,1,no,northwest,12044.342 +18,male,34.43,0,no,southeast,1137.4697 +19,male,30.59,0,no,northwest,1639.5631 +39,female,32.8,0,no,southwest,5649.715 +45,female,28.6,2,no,southeast,8516.829 +51,female,18.05,0,no,northwest,9644.2525 +64,female,39.33,0,no,northeast,14901.5167 +19,female,32.11,0,no,northwest,2130.6759 +48,female,32.23,1,no,southeast,8871.1517 +60,female,24.035,0,no,northwest,13012.20865 +27,female,36.08,0,yes,southeast,37133.8982 +46,male,22.3,0,no,southwest,7147.105 +28,female,28.88,1,no,northeast,4337.7352 +59,male,26.4,0,no,southeast,11743.299 +35,male,27.74,2,yes,northeast,20984.0936 +63,female,31.8,0,no,southwest,13880.949 +40,male,41.23,1,no,northeast,6610.1097 +20,male,33,1,no,southwest,1980.07 +40,male,30.875,4,no,northwest,8162.71625 +24,male,28.5,2,no,northwest,3537.703 +34,female,26.73,1,no,southeast,5002.7827 +45,female,30.9,2,no,southwest,8520.026 +41,female,37.1,2,no,southwest,7371.772 +53,female,26.6,0,no,northwest,10355.641 +27,male,23.1,0,no,southeast,2483.736 +26,female,29.92,1,no,southeast,3392.9768 +24,female,23.21,0,no,southeast,25081.76784 +34,female,33.7,1,no,southwest,5012.471 +53,female,33.25,0,no,northeast,10564.8845 +32,male,30.8,3,no,southwest,5253.524 +19,male,34.8,0,yes,southwest,34779.615 +42,male,24.64,0,yes,southeast,19515.5416 +55,male,33.88,3,no,southeast,11987.1682 +28,male,38.06,0,no,southeast,2689.4954 +58,female,41.91,0,no,southeast,24227.33724 +41,female,31.635,1,no,northeast,7358.17565 +47,male,25.46,2,no,northeast,9225.2564 +42,female,36.195,1,no,northwest,7443.64305 +59,female,27.83,3,no,southeast,14001.2867 +19,female,17.8,0,no,southwest,1727.785 +59,male,27.5,1,no,southwest,12333.828 +39,male,24.51,2,no,northwest,6710.1919 +40,female,22.22,2,yes,southeast,19444.2658 +18,female,26.73,0,no,southeast,1615.7667 +31,male,38.39,2,no,southeast,4463.2051 +19,male,29.07,0,yes,northwest,17352.6803 +44,male,38.06,1,no,southeast,7152.6714 +23,female,36.67,2,yes,northeast,38511.6283 +33,female,22.135,1,no,northeast,5354.07465 +55,female,26.8,1,no,southwest,35160.13457 +40,male,35.3,3,no,southwest,7196.867 +63,female,27.74,0,yes,northeast,29523.1656 +54,male,30.02,0,no,northwest,24476.47851 +60,female,38.06,0,no,southeast,12648.7034 +24,male,35.86,0,no,southeast,1986.9334 +19,male,20.9,1,no,southwest,1832.094 +29,male,28.975,1,no,northeast,4040.55825 +18,male,17.29,2,yes,northeast,12829.4551 +63,female,32.2,2,yes,southwest,47305.305 +54,male,34.21,2,yes,southeast,44260.7499 +27,male,30.3,3,no,southwest,4260.744 +50,male,31.825,0,yes,northeast,41097.16175 +55,female,25.365,3,no,northeast,13047.33235 +56,male,33.63,0,yes,northwest,43921.1837 +38,female,40.15,0,no,southeast,5400.9805 +51,male,24.415,4,no,northwest,11520.09985 +19,male,31.92,0,yes,northwest,33750.2918 +58,female,25.2,0,no,southwest,11837.16 +20,female,26.84,1,yes,southeast,17085.2676 +52,male,24.32,3,yes,northeast,24869.8368 +19,male,36.955,0,yes,northwest,36219.40545 +53,female,38.06,3,no,southeast,20462.99766 +46,male,42.35,3,yes,southeast,46151.1245 +40,male,19.8,1,yes,southeast,17179.522 +59,female,32.395,3,no,northeast,14590.63205 +45,male,30.2,1,no,southwest,7441.053 +49,male,25.84,1,no,northeast,9282.4806 +18,male,29.37,1,no,southeast,1719.4363 +50,male,34.2,2,yes,southwest,42856.838 +41,male,37.05,2,no,northwest,7265.7025 +50,male,27.455,1,no,northeast,9617.66245 +25,male,27.55,0,no,northwest,2523.1695 +47,female,26.6,2,no,northeast,9715.841 +19,male,20.615,2,no,northwest,2803.69785 +22,female,24.3,0,no,southwest,2150.469 +59,male,31.79,2,no,southeast,12928.7911 +51,female,21.56,1,no,southeast,9855.1314 +40,female,28.12,1,yes,northeast,22331.5668 +54,male,40.565,3,yes,northeast,48549.17835 +30,male,27.645,1,no,northeast,4237.12655 +55,female,32.395,1,no,northeast,11879.10405 +52,female,31.2,0,no,southwest,9625.92 +46,male,26.62,1,no,southeast,7742.1098 +46,female,48.07,2,no,northeast,9432.9253 +63,female,26.22,0,no,northwest,14256.1928 +59,female,36.765,1,yes,northeast,47896.79135 +52,male,26.4,3,no,southeast,25992.82104 +28,female,33.4,0,no,southwest,3172.018 +29,male,29.64,1,no,northeast,20277.80751 +25,male,45.54,2,yes,southeast,42112.2356 +22,female,28.82,0,no,southeast,2156.7518 +25,male,26.8,3,no,southwest,3906.127 +18,male,22.99,0,no,northeast,1704.5681 +19,male,27.7,0,yes,southwest,16297.846 +47,male,25.41,1,yes,southeast,21978.6769 +31,male,34.39,3,yes,northwest,38746.3551 +48,female,28.88,1,no,northwest,9249.4952 +36,male,27.55,3,no,northeast,6746.7425 +53,female,22.61,3,yes,northeast,24873.3849 +56,female,37.51,2,no,southeast,12265.5069 +28,female,33,2,no,southeast,4349.462 +57,female,38,2,no,southwest,12646.207 +29,male,33.345,2,no,northwest,19442.3535 +28,female,27.5,2,no,southwest,20177.67113 +30,female,33.33,1,no,southeast,4151.0287 +58,male,34.865,0,no,northeast,11944.59435 +41,female,33.06,2,no,northwest,7749.1564 +50,male,26.6,0,no,southwest,8444.474 +19,female,24.7,0,no,southwest,1737.376 +43,male,35.97,3,yes,southeast,42124.5153 +49,male,35.86,0,no,southeast,8124.4084 +27,female,31.4,0,yes,southwest,34838.873 +52,male,33.25,0,no,northeast,9722.7695 +50,male,32.205,0,no,northwest,8835.26495 +54,male,32.775,0,no,northeast,10435.06525 +44,female,27.645,0,no,northwest,7421.19455 +32,male,37.335,1,no,northeast,4667.60765 +34,male,25.27,1,no,northwest,4894.7533 +26,female,29.64,4,no,northeast,24671.66334 +34,male,30.8,0,yes,southwest,35491.64 +57,male,40.945,0,no,northeast,11566.30055 +29,male,27.2,0,no,southwest,2866.091 +40,male,34.105,1,no,northeast,6600.20595 +27,female,23.21,1,no,southeast,3561.8889 +45,male,36.48,2,yes,northwest,42760.5022 +64,female,33.8,1,yes,southwest,47928.03 +52,male,36.7,0,no,southwest,9144.565 +61,female,36.385,1,yes,northeast,48517.56315 +52,male,27.36,0,yes,northwest,24393.6224 +61,female,31.16,0,no,northwest,13429.0354 +56,female,28.785,0,no,northeast,11658.37915 +43,female,35.72,2,no,northeast,19144.57652 +64,male,34.5,0,no,southwest,13822.803 +60,male,25.74,0,no,southeast,12142.5786 +62,male,27.55,1,no,northwest,13937.6665 +50,male,32.3,1,yes,northeast,41919.097 +46,female,27.72,1,no,southeast,8232.6388 +24,female,27.6,0,no,southwest,18955.22017 +62,male,30.02,0,no,northwest,13352.0998 +60,female,27.55,0,no,northeast,13217.0945 +63,male,36.765,0,no,northeast,13981.85035 +49,female,41.47,4,no,southeast,10977.2063 +34,female,29.26,3,no,southeast,6184.2994 +33,male,35.75,2,no,southeast,4889.9995 +46,male,33.345,1,no,northeast,8334.45755 +36,female,29.92,1,no,southeast,5478.0368 +19,male,27.835,0,no,northwest,1635.73365 +57,female,23.18,0,no,northwest,11830.6072 +50,female,25.6,0,no,southwest,8932.084 +30,female,27.7,0,no,southwest,3554.203 +33,male,35.245,0,no,northeast,12404.8791 +18,female,38.28,0,no,southeast,14133.03775 +46,male,27.6,0,no,southwest,24603.04837 +46,male,43.89,3,no,southeast,8944.1151 +47,male,29.83,3,no,northwest,9620.3307 +23,male,41.91,0,no,southeast,1837.2819 +18,female,20.79,0,no,southeast,1607.5101 +48,female,32.3,2,no,northeast,10043.249 +35,male,30.5,1,no,southwest,4751.07 +19,female,21.7,0,yes,southwest,13844.506 +21,female,26.4,1,no,southwest,2597.779 +21,female,21.89,2,no,southeast,3180.5101 +49,female,30.78,1,no,northeast,9778.3472 +56,female,32.3,3,no,northeast,13430.265 +42,female,24.985,2,no,northwest,8017.06115 +44,male,32.015,2,no,northwest,8116.26885 +18,male,30.4,3,no,northeast,3481.868 +61,female,21.09,0,no,northwest,13415.0381 +57,female,22.23,0,no,northeast,12029.2867 +42,female,33.155,1,no,northeast,7639.41745 +26,male,32.9,2,yes,southwest,36085.219 +20,male,33.33,0,no,southeast,1391.5287 +23,female,28.31,0,yes,northwest,18033.9679 +39,female,24.89,3,yes,northeast,21659.9301 +24,male,40.15,0,yes,southeast,38126.2465 +64,female,30.115,3,no,northwest,16455.70785 +62,male,31.46,1,no,southeast,27000.98473 +27,female,17.955,2,yes,northeast,15006.57945 +55,male,30.685,0,yes,northeast,42303.69215 +55,male,33,0,no,southeast,20781.48892 +35,female,43.34,2,no,southeast,5846.9176 +44,male,22.135,2,no,northeast,8302.53565 +19,male,34.4,0,no,southwest,1261.859 +58,female,39.05,0,no,southeast,11856.4115 +50,male,25.365,2,no,northwest,30284.64294 +26,female,22.61,0,no,northwest,3176.8159 +24,female,30.21,3,no,northwest,4618.0799 +48,male,35.625,4,no,northeast,10736.87075 +19,female,37.43,0,no,northwest,2138.0707 +48,male,31.445,1,no,northeast,8964.06055 +49,male,31.35,1,no,northeast,9290.1395 +46,female,32.3,2,no,northeast,9411.005 +46,male,19.855,0,no,northwest,7526.70645 +43,female,34.4,3,no,southwest,8522.003 +21,male,31.02,0,no,southeast,16586.49771 +64,male,25.6,2,no,southwest,14988.432 +18,female,38.17,0,no,southeast,1631.6683 +51,female,20.6,0,no,southwest,9264.797 +47,male,47.52,1,no,southeast,8083.9198 +64,female,32.965,0,no,northwest,14692.66935 +49,male,32.3,3,no,northwest,10269.46 +31,male,20.4,0,no,southwest,3260.199 +52,female,38.38,2,no,northeast,11396.9002 +33,female,24.31,0,no,southeast,4185.0979 +47,female,23.6,1,no,southwest,8539.671 +38,male,21.12,3,no,southeast,6652.5288 +32,male,30.03,1,no,southeast,4074.4537 +19,male,17.48,0,no,northwest,1621.3402 +44,female,20.235,1,yes,northeast,19594.80965 +26,female,17.195,2,yes,northeast,14455.64405 +25,male,23.9,5,no,southwest,5080.096 +19,female,35.15,0,no,northwest,2134.9015 +43,female,35.64,1,no,southeast,7345.7266 +52,male,34.1,0,no,southeast,9140.951 +36,female,22.6,2,yes,southwest,18608.262 +64,male,39.16,1,no,southeast,14418.2804 +63,female,26.98,0,yes,northwest,28950.4692 +64,male,33.88,0,yes,southeast,46889.2612 +61,male,35.86,0,yes,southeast,46599.1084 +40,male,32.775,1,yes,northeast,39125.33225 +25,male,30.59,0,no,northeast,2727.3951 +48,male,30.2,2,no,southwest,8968.33 +45,male,24.31,5,no,southeast,9788.8659 +38,female,27.265,1,no,northeast,6555.07035 +18,female,29.165,0,no,northeast,7323.734819 +21,female,16.815,1,no,northeast,3167.45585 +27,female,30.4,3,no,northwest,18804.7524 +19,male,33.1,0,no,southwest,23082.95533 +29,female,20.235,2,no,northwest,4906.40965 +42,male,26.9,0,no,southwest,5969.723 +60,female,30.5,0,no,southwest,12638.195 +31,male,28.595,1,no,northwest,4243.59005 +60,male,33.11,3,no,southeast,13919.8229 +22,male,31.73,0,no,northeast,2254.7967 +35,male,28.9,3,no,southwest,5926.846 +52,female,46.75,5,no,southeast,12592.5345 +26,male,29.45,0,no,northeast,2897.3235 +31,female,32.68,1,no,northwest,4738.2682 +33,female,33.5,0,yes,southwest,37079.372 +18,male,43.01,0,no,southeast,1149.3959 +59,female,36.52,1,no,southeast,28287.89766 +56,male,26.695,1,yes,northwest,26109.32905 +45,female,33.1,0,no,southwest,7345.084 +60,male,29.64,0,no,northeast,12730.9996 +56,female,25.65,0,no,northwest,11454.0215 +40,female,29.6,0,no,southwest,5910.944 +35,male,38.6,1,no,southwest,4762.329 +39,male,29.6,4,no,southwest,7512.267 +30,male,24.13,1,no,northwest,4032.2407 +24,male,23.4,0,no,southwest,1969.614 +20,male,29.735,0,no,northwest,1769.53165 +32,male,46.53,2,no,southeast,4686.3887 +59,male,37.4,0,no,southwest,21797.0004 +55,female,30.14,2,no,southeast,11881.9696 +57,female,30.495,0,no,northwest,11840.77505 +56,male,39.6,0,no,southwest,10601.412 +40,female,33,3,no,southeast,7682.67 +49,female,36.63,3,no,southeast,10381.4787 +42,male,30,0,yes,southwest,22144.032 +62,female,38.095,2,no,northeast,15230.32405 +56,male,25.935,0,no,northeast,11165.41765 +19,male,25.175,0,no,northwest,1632.03625 +30,female,28.38,1,yes,southeast,19521.9682 +60,female,28.7,1,no,southwest,13224.693 +56,female,33.82,2,no,northwest,12643.3778 +28,female,24.32,1,no,northeast,23288.9284 +18,female,24.09,1,no,southeast,2201.0971 +27,male,32.67,0,no,southeast,2497.0383 +18,female,30.115,0,no,northeast,2203.47185 +19,female,29.8,0,no,southwest,1744.465 +47,female,33.345,0,no,northeast,20878.78443 +54,male,25.1,3,yes,southwest,25382.297 +61,male,28.31,1,yes,northwest,28868.6639 +24,male,28.5,0,yes,northeast,35147.52848 +25,male,35.625,0,no,northwest,2534.39375 +21,male,36.85,0,no,southeast,1534.3045 +23,male,32.56,0,no,southeast,1824.2854 +63,male,41.325,3,no,northwest,15555.18875 +49,male,37.51,2,no,southeast,9304.7019 +18,female,31.35,0,no,southeast,1622.1885 +51,female,39.5,1,no,southwest,9880.068 +48,male,34.3,3,no,southwest,9563.029 +31,female,31.065,0,no,northeast,4347.02335 +54,female,21.47,3,no,northwest,12475.3513 +19,male,28.7,0,no,southwest,1253.936 +44,female,38.06,0,yes,southeast,48885.13561 +53,male,31.16,1,no,northwest,10461.9794 +19,female,32.9,0,no,southwest,1748.774 +61,female,25.08,0,no,southeast,24513.09126 +18,female,25.08,0,no,northeast,2196.4732 +61,male,43.4,0,no,southwest,12574.049 +21,male,25.7,4,yes,southwest,17942.106 +20,male,27.93,0,no,northeast,1967.0227 +31,female,23.6,2,no,southwest,4931.647 +45,male,28.7,2,no,southwest,8027.968 +44,female,23.98,2,no,southeast,8211.1002 +62,female,39.2,0,no,southwest,13470.86 +29,male,34.4,0,yes,southwest,36197.699 +43,male,26.03,0,no,northeast,6837.3687 +51,male,23.21,1,yes,southeast,22218.1149 +19,male,30.25,0,yes,southeast,32548.3405 +38,female,28.93,1,no,southeast,5974.3847 +37,male,30.875,3,no,northwest,6796.86325 +22,male,31.35,1,no,northwest,2643.2685 +21,male,23.75,2,no,northwest,3077.0955 +24,female,25.27,0,no,northeast,3044.2133 +57,female,28.7,0,no,southwest,11455.28 +56,male,32.11,1,no,northeast,11763.0009 +27,male,33.66,0,no,southeast,2498.4144 +51,male,22.42,0,no,northeast,9361.3268 +19,male,30.4,0,no,southwest,1256.299 +39,male,28.3,1,yes,southwest,21082.16 +58,male,35.7,0,no,southwest,11362.755 +20,male,35.31,1,no,southeast,27724.28875 +45,male,30.495,2,no,northwest,8413.46305 +35,female,31,1,no,southwest,5240.765 +31,male,30.875,0,no,northeast,3857.75925 +50,female,27.36,0,no,northeast,25656.57526 +32,female,44.22,0,no,southeast,3994.1778 +51,female,33.915,0,no,northeast,9866.30485 +38,female,37.73,0,no,southeast,5397.6167 +42,male,26.07,1,yes,southeast,38245.59327 +18,female,33.88,0,no,southeast,11482.63485 +19,female,30.59,2,no,northwest,24059.68019 +51,female,25.8,1,no,southwest,9861.025 +46,male,39.425,1,no,northeast,8342.90875 +18,male,25.46,0,no,northeast,1708.0014 +57,male,42.13,1,yes,southeast,48675.5177 +62,female,31.73,0,no,northeast,14043.4767 +59,male,29.7,2,no,southeast,12925.886 +37,male,36.19,0,no,southeast,19214.70553 +64,male,40.48,0,no,southeast,13831.1152 +38,male,28.025,1,no,northeast,6067.12675 +33,female,38.9,3,no,southwest,5972.378 +46,female,30.2,2,no,southwest,8825.086 +46,female,28.05,1,no,southeast,8233.0975 +53,male,31.35,0,no,southeast,27346.04207 +34,female,38,3,no,southwest,6196.448 +20,female,31.79,2,no,southeast,3056.3881 +63,female,36.3,0,no,southeast,13887.204 +54,female,47.41,0,yes,southeast,63770.42801 +54,male,30.21,0,no,northwest,10231.4999 +49,male,25.84,2,yes,northwest,23807.2406 +28,male,35.435,0,no,northeast,3268.84665 +54,female,46.7,2,no,southwest,11538.421 +25,female,28.595,0,no,northeast,3213.62205 +43,female,46.2,0,yes,southeast,45863.205 +63,male,30.8,0,no,southwest,13390.559 +32,female,28.93,0,no,southeast,3972.9247 +62,male,21.4,0,no,southwest,12957.118 +52,female,31.73,2,no,northwest,11187.6567 +25,female,41.325,0,no,northeast,17878.90068 +28,male,23.8,2,no,southwest,3847.674 +46,male,33.44,1,no,northeast,8334.5896 +34,male,34.21,0,no,southeast,3935.1799 +35,female,34.105,3,yes,northwest,39983.42595 +19,male,35.53,0,no,northwest,1646.4297 +46,female,19.95,2,no,northwest,9193.8385 +54,female,32.68,0,no,northeast,10923.9332 +27,male,30.5,0,no,southwest,2494.022 +50,male,44.77,1,no,southeast,9058.7303 +18,female,32.12,2,no,southeast,2801.2588 +19,female,30.495,0,no,northwest,2128.43105 +38,female,40.565,1,no,northwest,6373.55735 +41,male,30.59,2,no,northwest,7256.7231 +49,female,31.9,5,no,southwest,11552.904 +48,male,40.565,2,yes,northwest,45702.02235 +31,female,29.1,0,no,southwest,3761.292 +18,female,37.29,1,no,southeast,2219.4451 +30,female,43.12,2,no,southeast,4753.6368 +62,female,36.86,1,no,northeast,31620.00106 +57,female,34.295,2,no,northeast,13224.05705 +58,female,27.17,0,no,northwest,12222.8983 +22,male,26.84,0,no,southeast,1664.9996 +31,female,38.095,1,yes,northeast,58571.07448 +52,male,30.2,1,no,southwest,9724.53 +25,female,23.465,0,no,northeast,3206.49135 +59,male,25.46,1,no,northeast,12913.9924 +19,male,30.59,0,no,northwest,1639.5631 +39,male,45.43,2,no,southeast,6356.2707 +32,female,23.65,1,no,southeast,17626.23951 +19,male,20.7,0,no,southwest,1242.816 +33,female,28.27,1,no,southeast,4779.6023 +21,male,20.235,3,no,northeast,3861.20965 +34,female,30.21,1,yes,northwest,43943.8761 +61,female,35.91,0,no,northeast,13635.6379 +38,female,30.69,1,no,southeast,5976.8311 +58,female,29,0,no,southwest,11842.442 +47,male,19.57,1,no,northwest,8428.0693 +20,male,31.13,2,no,southeast,2566.4707 +21,female,21.85,1,yes,northeast,15359.1045 +41,male,40.26,0,no,southeast,5709.1644 +46,female,33.725,1,no,northeast,8823.98575 +42,female,29.48,2,no,southeast,7640.3092 +34,female,33.25,1,no,northeast,5594.8455 +43,male,32.6,2,no,southwest,7441.501 +52,female,37.525,2,no,northwest,33471.97189 +18,female,39.16,0,no,southeast,1633.0444 +51,male,31.635,0,no,northwest,9174.13565 +56,female,25.3,0,no,southwest,11070.535 +64,female,39.05,3,no,southeast,16085.1275 +19,female,28.31,0,yes,northwest,17468.9839 +51,female,34.1,0,no,southeast,9283.562 +27,female,25.175,0,no,northeast,3558.62025 +59,female,23.655,0,yes,northwest,25678.77845 +28,male,26.98,2,no,northeast,4435.0942 +30,male,37.8,2,yes,southwest,39241.442 +47,female,29.37,1,no,southeast,8547.6913 +38,female,34.8,2,no,southwest,6571.544 +18,female,33.155,0,no,northeast,2207.69745 +34,female,19,3,no,northeast,6753.038 +20,female,33,0,no,southeast,1880.07 +47,female,36.63,1,yes,southeast,42969.8527 +56,female,28.595,0,no,northeast,11658.11505 +49,male,25.6,2,yes,southwest,23306.547 +19,female,33.11,0,yes,southeast,34439.8559 +55,female,37.1,0,no,southwest,10713.644 +30,male,31.4,1,no,southwest,3659.346 +37,male,34.1,4,yes,southwest,40182.246 +49,female,21.3,1,no,southwest,9182.17 +18,male,33.535,0,yes,northeast,34617.84065 +59,male,28.785,0,no,northwest,12129.61415 +29,female,26.03,0,no,northwest,3736.4647 +36,male,28.88,3,no,northeast,6748.5912 +33,male,42.46,1,no,southeast,11326.71487 +58,male,38,0,no,southwest,11365.952 +44,female,38.95,0,yes,northwest,42983.4585 +53,male,36.1,1,no,southwest,10085.846 +24,male,29.3,0,no,southwest,1977.815 +29,female,35.53,0,no,southeast,3366.6697 +40,male,22.705,2,no,northeast,7173.35995 +51,male,39.7,1,no,southwest,9391.346 +64,male,38.19,0,no,northeast,14410.9321 +19,female,24.51,1,no,northwest,2709.1119 +35,female,38.095,2,no,northeast,24915.04626 +39,male,26.41,0,yes,northeast,20149.3229 +56,male,33.66,4,no,southeast,12949.1554 +33,male,42.4,5,no,southwest,6666.243 +42,male,28.31,3,yes,northwest,32787.45859 +61,male,33.915,0,no,northeast,13143.86485 +23,female,34.96,3,no,northwest,4466.6214 +43,male,35.31,2,no,southeast,18806.14547 +48,male,30.78,3,no,northeast,10141.1362 +39,male,26.22,1,no,northwest,6123.5688 +40,female,23.37,3,no,northeast,8252.2843 +18,male,28.5,0,no,northeast,1712.227 +58,female,32.965,0,no,northeast,12430.95335 +49,female,42.68,2,no,southeast,9800.8882 +53,female,39.6,1,no,southeast,10579.711 +48,female,31.13,0,no,southeast,8280.6227 +45,female,36.3,2,no,southeast,8527.532 +59,female,35.2,0,no,southeast,12244.531 +52,female,25.3,2,yes,southeast,24667.419 +26,female,42.4,1,no,southwest,3410.324 +27,male,33.155,2,no,northwest,4058.71245 +48,female,35.91,1,no,northeast,26392.26029 +57,female,28.785,4,no,northeast,14394.39815 +37,male,46.53,3,no,southeast,6435.6237 +57,female,23.98,1,no,southeast,22192.43711 +32,female,31.54,1,no,northeast,5148.5526 +18,male,33.66,0,no,southeast,1136.3994 +64,female,22.99,0,yes,southeast,27037.9141 +43,male,38.06,2,yes,southeast,42560.4304 +49,male,28.7,1,no,southwest,8703.456 +40,female,32.775,2,yes,northwest,40003.33225 +62,male,32.015,0,yes,northeast,45710.20785 +40,female,29.81,1,no,southeast,6500.2359 +30,male,31.57,3,no,southeast,4837.5823 +29,female,31.16,0,no,northeast,3943.5954 +36,male,29.7,0,no,southeast,4399.731 +41,female,31.02,0,no,southeast,6185.3208 +44,female,43.89,2,yes,southeast,46200.9851 +45,male,21.375,0,no,northwest,7222.78625 +55,female,40.81,3,no,southeast,12485.8009 +60,male,31.35,3,yes,northwest,46130.5265 +56,male,36.1,3,no,southwest,12363.547 +49,female,23.18,2,no,northwest,10156.7832 +21,female,17.4,1,no,southwest,2585.269 +19,male,20.3,0,no,southwest,1242.26 +39,male,35.3,2,yes,southwest,40103.89 +53,male,24.32,0,no,northwest,9863.4718 +33,female,18.5,1,no,southwest,4766.022 +53,male,26.41,2,no,northeast,11244.3769 +42,male,26.125,2,no,northeast,7729.64575 +40,male,41.69,0,no,southeast,5438.7491 +47,female,24.1,1,no,southwest,26236.57997 +27,male,31.13,1,yes,southeast,34806.4677 +21,male,27.36,0,no,northeast,2104.1134 +47,male,36.2,1,no,southwest,8068.185 +20,male,32.395,1,no,northwest,2362.22905 +24,male,23.655,0,no,northwest,2352.96845 +27,female,34.8,1,no,southwest,3577.999 +26,female,40.185,0,no,northwest,3201.24515 +53,female,32.3,2,no,northeast,29186.48236 +41,male,35.75,1,yes,southeast,40273.6455 +56,male,33.725,0,no,northwest,10976.24575 +23,female,39.27,2,no,southeast,3500.6123 +21,female,34.87,0,no,southeast,2020.5523 +50,female,44.745,0,no,northeast,9541.69555 +53,male,41.47,0,no,southeast,9504.3103 +34,female,26.41,1,no,northwest,5385.3379 +47,female,29.545,1,no,northwest,8930.93455 +33,female,32.9,2,no,southwest,5375.038 +51,female,38.06,0,yes,southeast,44400.4064 +49,male,28.69,3,no,northwest,10264.4421 +31,female,30.495,3,no,northeast,6113.23105 +36,female,27.74,0,no,northeast,5469.0066 +18,male,35.2,1,no,southeast,1727.54 +50,female,23.54,2,no,southeast,10107.2206 +43,female,30.685,2,no,northwest,8310.83915 +20,male,40.47,0,no,northeast,1984.4533 +24,female,22.6,0,no,southwest,2457.502 +60,male,28.9,0,no,southwest,12146.971 +49,female,22.61,1,no,northwest,9566.9909 +60,male,24.32,1,no,northwest,13112.6048 +51,female,36.67,2,no,northwest,10848.1343 +58,female,33.44,0,no,northwest,12231.6136 +51,female,40.66,0,no,northeast,9875.6804 +53,male,36.6,3,no,southwest,11264.541 +62,male,37.4,0,no,southwest,12979.358 +19,male,35.4,0,no,southwest,1263.249 +50,female,27.075,1,no,northeast,10106.13425 +30,female,39.05,3,yes,southeast,40932.4295 +41,male,28.405,1,no,northwest,6664.68595 +29,female,21.755,1,yes,northeast,16657.71745 +18,female,40.28,0,no,northeast,2217.6012 +41,female,36.08,1,no,southeast,6781.3542 +35,male,24.42,3,yes,southeast,19361.9988 +53,male,21.4,1,no,southwest,10065.413 +24,female,30.1,3,no,southwest,4234.927 +48,female,27.265,1,no,northeast,9447.25035 +59,female,32.1,3,no,southwest,14007.222 +49,female,34.77,1,no,northwest,9583.8933 +37,female,38.39,0,yes,southeast,40419.0191 +26,male,23.7,2,no,southwest,3484.331 +23,male,31.73,3,yes,northeast,36189.1017 +29,male,35.5,2,yes,southwest,44585.45587 +45,male,24.035,2,no,northeast,8604.48365 +27,male,29.15,0,yes,southeast,18246.4955 +53,male,34.105,0,yes,northeast,43254.41795 +31,female,26.62,0,no,southeast,3757.8448 +50,male,26.41,0,no,northwest,8827.2099 +50,female,30.115,1,no,northwest,9910.35985 +34,male,27,2,no,southwest,11737.84884 +19,male,21.755,0,no,northwest,1627.28245 +47,female,36,1,no,southwest,8556.907 +28,male,30.875,0,no,northwest,3062.50825 +37,female,26.4,0,yes,southeast,19539.243 +21,male,28.975,0,no,northwest,1906.35825 +64,male,37.905,0,no,northwest,14210.53595 +58,female,22.77,0,no,southeast,11833.7823 +24,male,33.63,4,no,northeast,17128.42608 +31,male,27.645,2,no,northeast,5031.26955 +39,female,22.8,3,no,northeast,7985.815 +47,female,27.83,0,yes,southeast,23065.4207 +30,male,37.43,3,no,northeast,5428.7277 +18,male,38.17,0,yes,southeast,36307.7983 +22,female,34.58,2,no,northeast,3925.7582 +23,male,35.2,1,no,southwest,2416.955 +33,male,27.1,1,yes,southwest,19040.876 +27,male,26.03,0,no,northeast,3070.8087 +45,female,25.175,2,no,northeast,9095.06825 +57,female,31.825,0,no,northwest,11842.62375 +47,male,32.3,1,no,southwest,8062.764 +42,female,29,1,no,southwest,7050.642 +64,female,39.7,0,no,southwest,14319.031 +38,female,19.475,2,no,northwest,6933.24225 +61,male,36.1,3,no,southwest,27941.28758 +53,female,26.7,2,no,southwest,11150.78 +44,female,36.48,0,no,northeast,12797.20962 +19,female,28.88,0,yes,northwest,17748.5062 +41,male,34.2,2,no,northwest,7261.741 +51,male,33.33,3,no,southeast,10560.4917 +40,male,32.3,2,no,northwest,6986.697 +45,male,39.805,0,no,northeast,7448.40395 +35,male,34.32,3,no,southeast,5934.3798 +53,male,28.88,0,no,northwest,9869.8102 +30,male,24.4,3,yes,southwest,18259.216 +18,male,41.14,0,no,southeast,1146.7966 +51,male,35.97,1,no,southeast,9386.1613 +50,female,27.6,1,yes,southwest,24520.264 +31,female,29.26,1,no,southeast,4350.5144 +35,female,27.7,3,no,southwest,6414.178 +60,male,36.955,0,no,northeast,12741.16745 +21,male,36.86,0,no,northwest,1917.3184 +29,male,22.515,3,no,northeast,5209.57885 +62,female,29.92,0,no,southeast,13457.9608 +39,female,41.8,0,no,southeast,5662.225 +19,male,27.6,0,no,southwest,1252.407 +22,female,23.18,0,no,northeast,2731.9122 +53,male,20.9,0,yes,southeast,21195.818 +39,female,31.92,2,no,northwest,7209.4918 +27,male,28.5,0,yes,northwest,18310.742 +30,male,44.22,2,no,southeast,4266.1658 +30,female,22.895,1,no,northeast,4719.52405 +58,female,33.1,0,no,southwest,11848.141 +33,male,24.795,0,yes,northeast,17904.52705 +42,female,26.18,1,no,southeast,7046.7222 +64,female,35.97,0,no,southeast,14313.8463 +21,male,22.3,1,no,southwest,2103.08 +18,female,42.24,0,yes,southeast,38792.6856 +23,male,26.51,0,no,southeast,1815.8759 +45,female,35.815,0,no,northwest,7731.85785 +40,female,41.42,1,no,northwest,28476.73499 +19,female,36.575,0,no,northwest,2136.88225 +18,male,30.14,0,no,southeast,1131.5066 +25,male,25.84,1,no,northeast,3309.7926 +46,female,30.8,3,no,southwest,9414.92 +33,female,42.94,3,no,northwest,6360.9936 +54,male,21.01,2,no,southeast,11013.7119 +28,male,22.515,2,no,northeast,4428.88785 +36,male,34.43,2,no,southeast,5584.3057 +20,female,31.46,0,no,southeast,1877.9294 +24,female,24.225,0,no,northwest,2842.76075 +23,male,37.1,3,no,southwest,3597.596 +47,female,26.125,1,yes,northeast,23401.30575 +33,female,35.53,0,yes,northwest,55135.40209 +45,male,33.7,1,no,southwest,7445.918 +26,male,17.67,0,no,northwest,2680.9493 +18,female,31.13,0,no,southeast,1621.8827 +44,female,29.81,2,no,southeast,8219.2039 +60,male,24.32,0,no,northwest,12523.6048 +64,female,31.825,2,no,northeast,16069.08475 +56,male,31.79,2,yes,southeast,43813.8661 +36,male,28.025,1,yes,northeast,20773.62775 +41,male,30.78,3,yes,northeast,39597.4072 +39,male,21.85,1,no,northwest,6117.4945 +63,male,33.1,0,no,southwest,13393.756 +36,female,25.84,0,no,northwest,5266.3656 +28,female,23.845,2,no,northwest,4719.73655 +58,male,34.39,0,no,northwest,11743.9341 +36,male,33.82,1,no,northwest,5377.4578 +42,male,35.97,2,no,southeast,7160.3303 +36,male,31.5,0,no,southwest,4402.233 +56,female,28.31,0,no,northeast,11657.7189 +35,female,23.465,2,no,northeast,6402.29135 +59,female,31.35,0,no,northwest,12622.1795 +21,male,31.1,0,no,southwest,1526.312 +59,male,24.7,0,no,northeast,12323.936 +23,female,32.78,2,yes,southeast,36021.0112 +57,female,29.81,0,yes,southeast,27533.9129 +53,male,30.495,0,no,northeast,10072.05505 +60,female,32.45,0,yes,southeast,45008.9555 +51,female,34.2,1,no,southwest,9872.701 +23,male,50.38,1,no,southeast,2438.0552 +27,female,24.1,0,no,southwest,2974.126 +55,male,32.775,0,no,northwest,10601.63225 +37,female,30.78,0,yes,northeast,37270.1512 +61,male,32.3,2,no,northwest,14119.62 +46,female,35.53,0,yes,northeast,42111.6647 +53,female,23.75,2,no,northeast,11729.6795 +49,female,23.845,3,yes,northeast,24106.91255 +20,female,29.6,0,no,southwest,1875.344 +48,female,33.11,0,yes,southeast,40974.1649 +25,male,24.13,0,yes,northwest,15817.9857 +25,female,32.23,1,no,southeast,18218.16139 +57,male,28.1,0,no,southwest,10965.446 +37,female,47.6,2,yes,southwest,46113.511 +38,female,28,3,no,southwest,7151.092 +55,female,33.535,2,no,northwest,12269.68865 +36,female,19.855,0,no,northeast,5458.04645 +51,male,25.4,0,no,southwest,8782.469 +40,male,29.9,2,no,southwest,6600.361 +18,male,37.29,0,no,southeast,1141.4451 +57,male,43.7,1,no,southwest,11576.13 +61,male,23.655,0,no,northeast,13129.60345 +25,female,24.3,3,no,southwest,4391.652 +50,male,36.2,0,no,southwest,8457.818 +26,female,29.48,1,no,southeast,3392.3652 +42,male,24.86,0,no,southeast,5966.8874 +43,male,30.1,1,no,southwest,6849.026 +44,male,21.85,3,no,northeast,8891.1395 +23,female,28.12,0,no,northwest,2690.1138 +49,female,27.1,1,no,southwest,26140.3603 +33,male,33.44,5,no,southeast,6653.7886 +41,male,28.8,1,no,southwest,6282.235 +37,female,29.5,2,no,southwest,6311.952 +22,male,34.8,3,no,southwest,3443.064 +23,male,27.36,1,no,northwest,2789.0574 +21,female,22.135,0,no,northeast,2585.85065 +51,female,37.05,3,yes,northeast,46255.1125 +25,male,26.695,4,no,northwest,4877.98105 +32,male,28.93,1,yes,southeast,19719.6947 +57,male,28.975,0,yes,northeast,27218.43725 +36,female,30.02,0,no,northwest,5272.1758 +22,male,39.5,0,no,southwest,1682.597 +57,male,33.63,1,no,northwest,11945.1327 +64,female,26.885,0,yes,northwest,29330.98315 +36,female,29.04,4,no,southeast,7243.8136 +54,male,24.035,0,no,northeast,10422.91665 +47,male,38.94,2,yes,southeast,44202.6536 +62,male,32.11,0,no,northeast,13555.0049 +61,female,44,0,no,southwest,13063.883 +43,female,20.045,2,yes,northeast,19798.05455 +19,male,25.555,1,no,northwest,2221.56445 +18,female,40.26,0,no,southeast,1634.5734 +19,female,22.515,0,no,northwest,2117.33885 +49,male,22.515,0,no,northeast,8688.85885 +60,male,40.92,0,yes,southeast,48673.5588 +26,male,27.265,3,no,northeast,4661.28635 +49,male,36.85,0,no,southeast,8125.7845 +60,female,35.1,0,no,southwest,12644.589 +26,female,29.355,2,no,northeast,4564.19145 +27,male,32.585,3,no,northeast,4846.92015 +44,female,32.34,1,no,southeast,7633.7206 +63,male,39.8,3,no,southwest,15170.069 +32,female,24.6,0,yes,southwest,17496.306 +22,male,28.31,1,no,northwest,2639.0429 +18,male,31.73,0,yes,northeast,33732.6867 +59,female,26.695,3,no,northwest,14382.70905 +44,female,27.5,1,no,southwest,7626.993 +33,male,24.605,2,no,northwest,5257.50795 +24,female,33.99,0,no,southeast,2473.3341 +43,female,26.885,0,yes,northwest,21774.32215 +45,male,22.895,0,yes,northeast,35069.37452 +61,female,28.2,0,no,southwest,13041.921 +35,female,34.21,1,no,southeast,5245.2269 +62,female,25,0,no,southwest,13451.122 +62,female,33.2,0,no,southwest,13462.52 +38,male,31,1,no,southwest,5488.262 +34,male,35.815,0,no,northwest,4320.41085 +43,male,23.2,0,no,southwest,6250.435 +50,male,32.11,2,no,northeast,25333.33284 +19,female,23.4,2,no,southwest,2913.569 +57,female,20.1,1,no,southwest,12032.326 +62,female,39.16,0,no,southeast,13470.8044 +41,male,34.21,1,no,southeast,6289.7549 +26,male,46.53,1,no,southeast,2927.0647 +39,female,32.5,1,no,southwest,6238.298 +46,male,25.8,5,no,southwest,10096.97 +45,female,35.3,0,no,southwest,7348.142 +32,male,37.18,2,no,southeast,4673.3922 +59,female,27.5,0,no,southwest,12233.828 +44,male,29.735,2,no,northeast,32108.66282 +39,female,24.225,5,no,northwest,8965.79575 +18,male,26.18,2,no,southeast,2304.0022 +53,male,29.48,0,no,southeast,9487.6442 +18,male,23.21,0,no,southeast,1121.8739 +50,female,46.09,1,no,southeast,9549.5651 +18,female,40.185,0,no,northeast,2217.46915 +19,male,22.61,0,no,northwest,1628.4709 +62,male,39.93,0,no,southeast,12982.8747 +56,female,35.8,1,no,southwest,11674.13 +42,male,35.8,2,no,southwest,7160.094 +37,male,34.2,1,yes,northeast,39047.285 +42,male,31.255,0,no,northwest,6358.77645 +25,male,29.7,3,yes,southwest,19933.458 +57,male,18.335,0,no,northeast,11534.87265 +51,male,42.9,2,yes,southeast,47462.894 +30,female,28.405,1,no,northwest,4527.18295 +44,male,30.2,2,yes,southwest,38998.546 +34,male,27.835,1,yes,northwest,20009.63365 +31,male,39.49,1,no,southeast,3875.7341 +54,male,30.8,1,yes,southeast,41999.52 +24,male,26.79,1,no,northwest,12609.88702 +43,male,34.96,1,yes,northeast,41034.2214 +48,male,36.67,1,no,northwest,28468.91901 +19,female,39.615,1,no,northwest,2730.10785 +29,female,25.9,0,no,southwest,3353.284 +63,female,35.2,1,no,southeast,14474.675 +46,male,24.795,3,no,northeast,9500.57305 +52,male,36.765,2,no,northwest,26467.09737 +35,male,27.1,1,no,southwest,4746.344 +51,male,24.795,2,yes,northwest,23967.38305 +44,male,25.365,1,no,northwest,7518.02535 +21,male,25.745,2,no,northeast,3279.86855 +39,female,34.32,5,no,southeast,8596.8278 +50,female,28.16,3,no,southeast,10702.6424 +34,female,23.56,0,no,northeast,4992.3764 +22,female,20.235,0,no,northwest,2527.81865 +19,female,40.5,0,no,southwest,1759.338 +26,male,35.42,0,no,southeast,2322.6218 +29,male,22.895,0,yes,northeast,16138.76205 +48,male,40.15,0,no,southeast,7804.1605 +26,male,29.15,1,no,southeast,2902.9065 +45,female,39.995,3,no,northeast,9704.66805 +36,female,29.92,0,no,southeast,4889.0368 +54,male,25.46,1,no,northeast,25517.11363 +34,male,21.375,0,no,northeast,4500.33925 +31,male,25.9,3,yes,southwest,19199.944 +27,female,30.59,1,no,northeast,16796.41194 +20,male,30.115,5,no,northeast,4915.05985 +44,female,25.8,1,no,southwest,7624.63 +43,male,30.115,3,no,northwest,8410.04685 +45,female,27.645,1,no,northwest,28340.18885 +34,male,34.675,0,no,northeast,4518.82625 +24,female,20.52,0,yes,northeast,14571.8908 +26,female,19.8,1,no,southwest,3378.91 +38,female,27.835,2,no,northeast,7144.86265 +50,female,31.6,2,no,southwest,10118.424 +38,male,28.27,1,no,southeast,5484.4673 +27,female,20.045,3,yes,northwest,16420.49455 +39,female,23.275,3,no,northeast,7986.47525 +39,female,34.1,3,no,southwest,7418.522 +63,female,36.85,0,no,southeast,13887.9685 +33,female,36.29,3,no,northeast,6551.7501 +36,female,26.885,0,no,northwest,5267.81815 +30,male,22.99,2,yes,northwest,17361.7661 +24,male,32.7,0,yes,southwest,34472.841 +24,male,25.8,0,no,southwest,1972.95 +48,male,29.6,0,no,southwest,21232.18226 +47,male,19.19,1,no,northeast,8627.5411 +29,male,31.73,2,no,northwest,4433.3877 +28,male,29.26,2,no,northeast,4438.2634 +47,male,28.215,3,yes,northwest,24915.22085 +25,male,24.985,2,no,northeast,23241.47453 +51,male,27.74,1,no,northeast,9957.7216 +48,female,22.8,0,no,southwest,8269.044 +43,male,20.13,2,yes,southeast,18767.7377 +61,female,33.33,4,no,southeast,36580.28216 +48,male,32.3,1,no,northwest,8765.249 +38,female,27.6,0,no,southwest,5383.536 +59,male,25.46,0,no,northwest,12124.9924 +19,female,24.605,1,no,northwest,2709.24395 +26,female,34.2,2,no,southwest,3987.926 +54,female,35.815,3,no,northwest,12495.29085 +21,female,32.68,2,no,northwest,26018.95052 +51,male,37,0,no,southwest,8798.593 +22,female,31.02,3,yes,southeast,35595.5898 +47,male,36.08,1,yes,southeast,42211.1382 +18,male,23.32,1,no,southeast,1711.0268 +47,female,45.32,1,no,southeast,8569.8618 +21,female,34.6,0,no,southwest,2020.177 +19,male,26.03,1,yes,northwest,16450.8947 +23,male,18.715,0,no,northwest,21595.38229 +54,male,31.6,0,no,southwest,9850.432 +37,female,17.29,2,no,northeast,6877.9801 +46,female,23.655,1,yes,northwest,21677.28345 +55,female,35.2,0,yes,southeast,44423.803 +30,female,27.93,0,no,northeast,4137.5227 +18,male,21.565,0,yes,northeast,13747.87235 +61,male,38.38,0,no,northwest,12950.0712 +54,female,23,3,no,southwest,12094.478 +22,male,37.07,2,yes,southeast,37484.4493 +45,female,30.495,1,yes,northwest,39725.51805 +22,male,28.88,0,no,northeast,2250.8352 +19,male,27.265,2,no,northwest,22493.65964 +35,female,28.025,0,yes,northwest,20234.85475 +18,male,23.085,0,no,northeast,1704.70015 +20,male,30.685,0,yes,northeast,33475.81715 +28,female,25.8,0,no,southwest,3161.454 +55,male,35.245,1,no,northeast,11394.06555 +43,female,24.7,2,yes,northwest,21880.82 +43,female,25.08,0,no,northeast,7325.0482 +22,male,52.58,1,yes,southeast,44501.3982 +25,female,22.515,1,no,northwest,3594.17085 +49,male,30.9,0,yes,southwest,39727.614 +44,female,36.955,1,no,northwest,8023.13545 +64,male,26.41,0,no,northeast,14394.5579 +49,male,29.83,1,no,northeast,9288.0267 +47,male,29.8,3,yes,southwest,25309.489 +27,female,21.47,0,no,northwest,3353.4703 +55,male,27.645,0,no,northwest,10594.50155 +48,female,28.9,0,no,southwest,8277.523 +45,female,31.79,0,no,southeast,17929.30337 +24,female,39.49,0,no,southeast,2480.9791 +32,male,33.82,1,no,northwest,4462.7218 +24,male,32.01,0,no,southeast,1981.5819 +57,male,27.94,1,no,southeast,11554.2236 +59,male,41.14,1,yes,southeast,48970.2476 +36,male,28.595,3,no,northwest,6548.19505 +29,female,25.6,4,no,southwest,5708.867 +42,female,25.3,1,no,southwest,7045.499 +48,male,37.29,2,no,southeast,8978.1851 +39,male,42.655,0,no,northeast,5757.41345 +63,male,21.66,1,no,northwest,14349.8544 +54,female,31.9,1,no,southeast,10928.849 +37,male,37.07,1,yes,southeast,39871.7043 +63,male,31.445,0,no,northeast,13974.45555 +21,male,31.255,0,no,northwest,1909.52745 +54,female,28.88,2,no,northeast,12096.6512 +60,female,18.335,0,no,northeast,13204.28565 +32,female,29.59,1,no,southeast,4562.8421 +47,female,32,1,no,southwest,8551.347 +21,male,26.03,0,no,northeast,2102.2647 +28,male,31.68,0,yes,southeast,34672.1472 +63,male,33.66,3,no,southeast,15161.5344 +18,male,21.78,2,no,southeast,11884.04858 +32,male,27.835,1,no,northwest,4454.40265 +38,male,19.95,1,no,northwest,5855.9025 +32,male,31.5,1,no,southwest,4076.497 +62,female,30.495,2,no,northwest,15019.76005 +39,female,18.3,5,yes,southwest,19023.26 +55,male,28.975,0,no,northeast,10796.35025 +57,male,31.54,0,no,northwest,11353.2276 +52,male,47.74,1,no,southeast,9748.9106 +56,male,22.1,0,no,southwest,10577.087 +47,male,36.19,0,yes,southeast,41676.0811 +55,female,29.83,0,no,northeast,11286.5387 +23,male,32.7,3,no,southwest,3591.48 +22,female,30.4,0,yes,northwest,33907.548 +50,female,33.7,4,no,southwest,11299.343 +18,female,31.35,4,no,northeast,4561.1885 +51,female,34.96,2,yes,northeast,44641.1974 +22,male,33.77,0,no,southeast,1674.6323 +52,female,30.875,0,no,northeast,23045.56616 +25,female,33.99,1,no,southeast,3227.1211 +33,female,19.095,2,yes,northeast,16776.30405 +53,male,28.6,3,no,southwest,11253.421 +29,male,38.94,1,no,southeast,3471.4096 +58,male,36.08,0,no,southeast,11363.2832 +37,male,29.8,0,no,southwest,20420.60465 +54,female,31.24,0,no,southeast,10338.9316 +49,female,29.925,0,no,northwest,8988.15875 +50,female,26.22,2,no,northwest,10493.9458 +26,male,30,1,no,southwest,2904.088 +45,male,20.35,3,no,southeast,8605.3615 +54,female,32.3,1,no,northeast,11512.405 +38,male,38.39,3,yes,southeast,41949.2441 +48,female,25.85,3,yes,southeast,24180.9335 +28,female,26.315,3,no,northwest,5312.16985 +23,male,24.51,0,no,northeast,2396.0959 +55,male,32.67,1,no,southeast,10807.4863 +41,male,29.64,5,no,northeast,9222.4026 +25,male,33.33,2,yes,southeast,36124.5737 +33,male,35.75,1,yes,southeast,38282.7495 +30,female,19.95,3,no,northwest,5693.4305 +23,female,31.4,0,yes,southwest,34166.273 +46,male,38.17,2,no,southeast,8347.1643 +53,female,36.86,3,yes,northwest,46661.4424 +27,female,32.395,1,no,northeast,18903.49141 +23,female,42.75,1,yes,northeast,40904.1995 +63,female,25.08,0,no,northwest,14254.6082 +55,male,29.9,0,no,southwest,10214.636 +35,female,35.86,2,no,southeast,5836.5204 +34,male,32.8,1,no,southwest,14358.36437 +19,female,18.6,0,no,southwest,1728.897 +39,female,23.87,5,no,southeast,8582.3023 +27,male,45.9,2,no,southwest,3693.428 +57,male,40.28,0,no,northeast,20709.02034 +52,female,18.335,0,no,northwest,9991.03765 +28,male,33.82,0,no,northwest,19673.33573 +50,female,28.12,3,no,northwest,11085.5868 +44,female,25,1,no,southwest,7623.518 +26,female,22.23,0,no,northwest,3176.2877 +33,male,30.25,0,no,southeast,3704.3545 +19,female,32.49,0,yes,northwest,36898.73308 +50,male,37.07,1,no,southeast,9048.0273 +41,female,32.6,3,no,southwest,7954.517 +52,female,24.86,0,no,southeast,27117.99378 +39,male,32.34,2,no,southeast,6338.0756 +50,male,32.3,2,no,southwest,9630.397 +52,male,32.775,3,no,northwest,11289.10925 +60,male,32.8,0,yes,southwest,52590.82939 +20,female,31.92,0,no,northwest,2261.5688 +55,male,21.5,1,no,southwest,10791.96 +42,male,34.1,0,no,southwest,5979.731 +18,female,30.305,0,no,northeast,2203.73595 +58,female,36.48,0,no,northwest,12235.8392 +43,female,32.56,3,yes,southeast,40941.2854 +35,female,35.815,1,no,northwest,5630.45785 +48,female,27.93,4,no,northwest,11015.1747 +36,female,22.135,3,no,northeast,7228.21565 +19,male,44.88,0,yes,southeast,39722.7462 +23,female,23.18,2,no,northwest,14426.07385 +20,female,30.59,0,no,northeast,2459.7201 +32,female,41.1,0,no,southwest,3989.841 +43,female,34.58,1,no,northwest,7727.2532 +34,male,42.13,2,no,southeast,5124.1887 +30,male,38.83,1,no,southeast,18963.17192 +18,female,28.215,0,no,northeast,2200.83085 +41,female,28.31,1,no,northwest,7153.5539 +35,female,26.125,0,no,northeast,5227.98875 +57,male,40.37,0,no,southeast,10982.5013 +29,female,24.6,2,no,southwest,4529.477 +32,male,35.2,2,no,southwest,4670.64 +37,female,34.105,1,no,northwest,6112.35295 +18,male,27.36,1,yes,northeast,17178.6824 +43,female,26.7,2,yes,southwest,22478.6 +56,female,41.91,0,no,southeast,11093.6229 +38,male,29.26,2,no,northwest,6457.8434 +29,male,32.11,2,no,northwest,4433.9159 +22,female,27.1,0,no,southwest,2154.361 +52,female,24.13,1,yes,northwest,23887.6627 +40,female,27.4,1,no,southwest,6496.886 +23,female,34.865,0,no,northeast,2899.48935 +31,male,29.81,0,yes,southeast,19350.3689 +42,female,41.325,1,no,northeast,7650.77375 +24,female,29.925,0,no,northwest,2850.68375 +25,female,30.3,0,no,southwest,2632.992 +48,female,27.36,1,no,northeast,9447.3824 +23,female,28.49,1,yes,southeast,18328.2381 +45,male,23.56,2,no,northeast,8603.8234 +20,male,35.625,3,yes,northwest,37465.34375 +62,female,32.68,0,no,northwest,13844.7972 +43,female,25.27,1,yes,northeast,21771.3423 +23,female,28,0,no,southwest,13126.67745 +31,female,32.775,2,no,northwest,5327.40025 +41,female,21.755,1,no,northeast,13725.47184 +58,female,32.395,1,no,northeast,13019.16105 +48,female,36.575,0,no,northwest,8671.19125 +31,female,21.755,0,no,northwest,4134.08245 +19,female,27.93,3,no,northwest,18838.70366 +19,female,30.02,0,yes,northwest,33307.5508 +41,male,33.55,0,no,southeast,5699.8375 +40,male,29.355,1,no,northwest,6393.60345 +31,female,25.8,2,no,southwest,4934.705 +37,male,24.32,2,no,northwest,6198.7518 +46,male,40.375,2,no,northwest,8733.22925 +22,male,32.11,0,no,northwest,2055.3249 +51,male,32.3,1,no,northeast,9964.06 +18,female,27.28,3,yes,southeast,18223.4512 +35,male,17.86,1,no,northwest,5116.5004 +59,female,34.8,2,no,southwest,36910.60803 +36,male,33.4,2,yes,southwest,38415.474 +37,female,25.555,1,yes,northeast,20296.86345 +59,male,37.1,1,no,southwest,12347.172 +36,male,30.875,1,no,northwest,5373.36425 +39,male,34.1,2,no,southeast,23563.01618 +18,male,21.47,0,no,northeast,1702.4553 +52,female,33.3,2,no,southwest,10806.839 +27,female,31.255,1,no,northwest,3956.07145 +18,male,39.14,0,no,northeast,12890.05765 +40,male,25.08,0,no,southeast,5415.6612 +29,male,37.29,2,no,southeast,4058.1161 +46,female,34.6,1,yes,southwest,41661.602 +38,female,30.21,3,no,northwest,7537.1639 +30,female,21.945,1,no,northeast,4718.20355 +40,male,24.97,2,no,southeast,6593.5083 +50,male,25.3,0,no,southeast,8442.667 +20,female,24.42,0,yes,southeast,26125.67477 +41,male,23.94,1,no,northeast,6858.4796 +33,female,39.82,1,no,southeast,4795.6568 +38,male,16.815,2,no,northeast,6640.54485 +42,male,37.18,2,no,southeast,7162.0122 +56,male,34.43,0,no,southeast,10594.2257 +58,male,30.305,0,no,northeast,11938.25595 +52,male,34.485,3,yes,northwest,60021.39897 +20,female,21.8,0,yes,southwest,20167.33603 +54,female,24.605,3,no,northwest,12479.70895 +58,male,23.3,0,no,southwest,11345.519 +45,female,27.83,2,no,southeast,8515.7587 +26,male,31.065,0,no,northwest,2699.56835 +63,female,21.66,0,no,northeast,14449.8544 +58,female,28.215,0,no,northwest,12224.35085 +37,male,22.705,3,no,northeast,6985.50695 +25,female,42.13,1,no,southeast,3238.4357 +52,male,41.8,2,yes,southeast,47269.854 +64,male,36.96,2,yes,southeast,49577.6624 +22,female,21.28,3,no,northwest,4296.2712 +28,female,33.11,0,no,southeast,3171.6149 +18,male,33.33,0,no,southeast,1135.9407 +28,male,24.3,5,no,southwest,5615.369 +45,female,25.7,3,no,southwest,9101.798 +33,male,29.4,4,no,southwest,6059.173 +18,female,39.82,0,no,southeast,1633.9618 +32,male,33.63,1,yes,northeast,37607.5277 +24,male,29.83,0,yes,northeast,18648.4217 +19,male,19.8,0,no,southwest,1241.565 +20,male,27.3,0,yes,southwest,16232.847 +40,female,29.3,4,no,southwest,15828.82173 +34,female,27.72,0,no,southeast,4415.1588 +42,female,37.9,0,no,southwest,6474.013 +51,female,36.385,3,no,northwest,11436.73815 +54,female,27.645,1,no,northwest,11305.93455 +55,male,37.715,3,no,northwest,30063.58055 +52,female,23.18,0,no,northeast,10197.7722 +32,female,20.52,0,no,northeast,4544.2348 +28,male,37.1,1,no,southwest,3277.161 +41,female,28.05,1,no,southeast,6770.1925 +43,female,29.9,1,no,southwest,7337.748 +49,female,33.345,2,no,northeast,10370.91255 +64,male,23.76,0,yes,southeast,26926.5144 +55,female,30.5,0,no,southwest,10704.47 +24,male,31.065,0,yes,northeast,34254.05335 +20,female,33.3,0,no,southwest,1880.487 +45,male,27.5,3,no,southwest,8615.3 +26,male,33.915,1,no,northwest,3292.52985 +25,female,34.485,0,no,northwest,3021.80915 +43,male,25.52,5,no,southeast,14478.33015 +35,male,27.61,1,no,southeast,4747.0529 +26,male,27.06,0,yes,southeast,17043.3414 +57,male,23.7,0,no,southwest,10959.33 +22,female,30.4,0,no,northeast,2741.948 +32,female,29.735,0,no,northwest,4357.04365 +39,male,29.925,1,yes,northeast,22462.04375 +25,female,26.79,2,no,northwest,4189.1131 +48,female,33.33,0,no,southeast,8283.6807 +47,female,27.645,2,yes,northwest,24535.69855 +18,female,21.66,0,yes,northeast,14283.4594 +18,male,30.03,1,no,southeast,1720.3537 +61,male,36.3,1,yes,southwest,47403.88 +47,female,24.32,0,no,northeast,8534.6718 +28,female,17.29,0,no,northeast,3732.6251 +36,female,25.9,1,no,southwest,5472.449 +20,male,39.4,2,yes,southwest,38344.566 +44,male,34.32,1,no,southeast,7147.4728 +38,female,19.95,2,no,northeast,7133.9025 +19,male,34.9,0,yes,southwest,34828.654 +21,male,23.21,0,no,southeast,1515.3449 +46,male,25.745,3,no,northwest,9301.89355 +58,male,25.175,0,no,northeast,11931.12525 +20,male,22,1,no,southwest,1964.78 +18,male,26.125,0,no,northeast,1708.92575 +28,female,26.51,2,no,southeast,4340.4409 +33,male,27.455,2,no,northwest,5261.46945 +19,female,25.745,1,no,northwest,2710.82855 +45,male,30.36,0,yes,southeast,62592.87309 +62,male,30.875,3,yes,northwest,46718.16325 +25,female,20.8,1,no,southwest,3208.787 +43,male,27.8,0,yes,southwest,37829.7242 +42,male,24.605,2,yes,northeast,21259.37795 +24,female,27.72,0,no,southeast,2464.6188 +29,female,21.85,0,yes,northeast,16115.3045 +32,male,28.12,4,yes,northwest,21472.4788 +25,female,30.2,0,yes,southwest,33900.653 +41,male,32.2,2,no,southwest,6875.961 +42,male,26.315,1,no,northwest,6940.90985 +33,female,26.695,0,no,northwest,4571.41305 +34,male,42.9,1,no,southwest,4536.259 +19,female,34.7,2,yes,southwest,36397.576 +30,female,23.655,3,yes,northwest,18765.87545 +18,male,28.31,1,no,northeast,11272.33139 +19,female,20.6,0,no,southwest,1731.677 +18,male,53.13,0,no,southeast,1163.4627 +35,male,39.71,4,no,northeast,19496.71917 +39,female,26.315,2,no,northwest,7201.70085 +31,male,31.065,3,no,northwest,5425.02335 +62,male,26.695,0,yes,northeast,28101.33305 +62,male,38.83,0,no,southeast,12981.3457 +42,female,40.37,2,yes,southeast,43896.3763 +31,male,25.935,1,no,northwest,4239.89265 +61,male,33.535,0,no,northeast,13143.33665 +42,female,32.87,0,no,northeast,7050.0213 +51,male,30.03,1,no,southeast,9377.9047 +23,female,24.225,2,no,northeast,22395.74424 +52,male,38.6,2,no,southwest,10325.206 +57,female,25.74,2,no,southeast,12629.1656 +23,female,33.4,0,no,southwest,10795.93733 +52,female,44.7,3,no,southwest,11411.685 +50,male,30.97,3,no,northwest,10600.5483 +18,female,31.92,0,no,northeast,2205.9808 +18,female,36.85,0,no,southeast,1629.8335 +21,female,25.8,0,no,southwest,2007.945 +61,female,29.07,0,yes,northwest,29141.3603 +23,male,34.4,0,no,southwest,1826.843 +56,female,39.82,0,no,southeast,11090.7178 +27,male,42.13,0,yes,southeast,39611.7577 +19,male,24.6,1,no,southwest,1837.237 +52,female,30.78,1,no,northeast,10797.3362 +23,male,23.845,0,no,northeast,2395.17155 +56,male,40.3,0,no,southwest,10602.385 +30,male,35.3,0,yes,southwest,36837.467 +58,female,28.215,0,no,northwest,12224.35085 +37,male,22.705,3,no,northeast,6985.50695 +25,female,42.13,1,no,southeast,3238.4357 +52,male,41.8,2,yes,southeast,47269.854 +64,male,36.96,2,yes,southeast,49577.6624 +22,female,21.28,3,no,northwest,4296.2712 +28,female,33.11,0,no,southeast,3171.6149 +18,male,33.33,0,no,southeast,1135.9407 +28,male,24.3,5,no,southwest,5615.369 +45,female,25.7,3,no,southwest,9101.798 +33,male,29.4,4,no,southwest,6059.173 +18,female,39.82,0,no,southeast,1633.9618 +32,male,33.63,1,yes,northeast,37607.5277 +19,female,23.4,2,no,southwest,2913.569 +57,female,20.1,1,no,southwest,12032.326 +62,female,39.16,0,no,southeast,13470.8044 +41,male,34.21,1,no,southeast,6289.7549 +26,male,46.53,1,no,southeast,2927.0647 +39,female,32.5,1,no,southwest,6238.298 +46,male,25.8,5,no,southwest,10096.97 +45,female,35.3,0,no,southwest,7348.142 +32,male,37.18,2,no,southeast,4673.3922 +59,female,27.5,0,no,southwest,12233.828 +44,male,29.735,2,no,northeast,32108.66282 +39,female,24.225,5,no,northwest,8965.79575 +18,male,26.18,2,no,southeast,2304.0022 +53,male,29.48,0,no,southeast,9487.6442 +18,male,23.21,0,no,southeast,1121.8739 +26,female,34.2,2,no,southwest,3987.926 +54,female,35.815,3,no,northwest,12495.29085 +21,female,32.68,2,no,northwest,26018.95052 +51,male,37,0,no,southwest,8798.593 +22,female,31.02,3,yes,southeast,35595.5898 +47,male,36.08,1,yes,southeast,42211.1382 +18,male,23.32,1,no,southeast,1711.0268 +47,female,45.32,1,no,southeast,8569.8618 +21,female,34.6,0,no,southwest,2020.177 +19,male,26.03,1,yes,northwest,16450.8947 +23,male,18.715,0,no,northwest,21595.38229 +54,male,31.6,0,no,southwest,9850.432 +19,female,27.9,0,yes,southwest,16884.924 +18,male,33.77,1,no,southeast,1725.5523 +28,male,33,3,no,southeast,4449.462 +33,male,22.705,0,no,northwest,21984.47061 +32,male,28.88,0,no,northwest,3866.8552 +31,female,25.74,0,no,southeast,3756.6216 +46,female,33.44,1,no,southeast,8240.5896 +37,female,27.74,3,no,northwest,7281.5056 +37,male,29.83,2,no,northeast,6406.4107 +60,female,25.84,0,no,northwest,28923.13692 +25,male,26.22,0,no,northeast,2721.3208 +62,female,26.29,0,yes,southeast,27808.7251 +23,male,34.4,0,no,southwest,1826.843 +56,female,39.82,0,no,southeast,11090.7178 +27,male,42.13,0,yes,southeast,39611.7577 +19,male,24.6,1,no,southwest,1837.237 +52,female,30.78,1,no,northeast,10797.3362 +23,male,23.845,0,no,northeast,2395.17155 +56,male,40.3,0,no,southwest,10602.385 +30,male,35.3,0,yes,southwest,36837.467 +60,female,36.005,0,no,northeast,13228.84695 +30,female,32.4,1,no,southwest,4149.736 +18,male,34.1,0,no,southeast,1137.011 +34,female,31.92,1,yes,northeast,37701.8768 +37,male,28.025,2,no,northwest,6203.90175 +59,female,27.72,3,no,southeast,14001.1338 +63,female,23.085,0,no,northeast,14451.83515 +55,female,32.775,2,no,northwest,12268.63225 +23,male,17.385,1,no,northwest,2775.19215 +31,male,36.3,2,yes,southwest,38711 +22,male,35.6,0,yes,southwest,35585.576 +18,female,26.315,0,no,northeast,2198.18985 +19,female,28.6,5,no,southwest,4687.797 +63,male,28.31,0,no,northwest,13770.0979 +28,male,36.4,1,yes,southwest,51194.55914 +19,male,20.425,0,no,northwest,1625.43375 +62,female,32.965,3,no,northwest,15612.19335 +26,male,20.8,0,no,southwest,2302.3 +35,male,36.67,1,yes,northeast,39774.2763 +60,male,39.9,0,yes,southwest,48173.361 +24,female,26.6,0,no,northeast,3046.062 +31,female,36.63,2,no,southeast,4949.7587 +41,male,21.78,1,no,southeast,6272.4772 +37,female,30.8,2,no,southeast,6313.759 +38,male,37.05,1,no,northeast,6079.6715 +55,male,37.3,0,no,southwest,20630.28351 +18,female,38.665,2,no,northeast,3393.35635 +28,female,34.77,0,no,northwest,3556.9223 +60,female,24.53,0,no,southeast,12629.8967 +36,male,35.2,1,yes,southeast,38709.176 +18,female,35.625,0,no,northeast,2211.13075 +21,female,33.63,2,no,northwest,3579.8287 +48,male,28,1,yes,southwest,23568.272 +36,male,34.43,0,yes,southeast,37742.5757 +40,female,28.69,3,no,northwest,8059.6791 +58,male,36.955,2,yes,northwest,47496.49445 +58,female,31.825,2,no,northeast,13607.36875 +18,male,31.68,2,yes,southeast,34303.1672 +53,female,22.88,1,yes,southeast,23244.7902 +34,female,37.335,2,no,northwest,5989.52365 +43,male,27.36,3,no,northeast,8606.2174 +25,male,33.66,4,no,southeast,4504.6624 +64,male,24.7,1,no,northwest,30166.61817 +28,female,25.935,1,no,northwest,4133.64165 +20,female,22.42,0,yes,northwest,14711.7438 +19,female,28.9,0,no,southwest,1743.214 +61,female,39.1,2,no,southwest,14235.072 +40,male,26.315,1,no,northwest,6389.37785 +40,female,36.19,0,no,southeast,5920.1041 +28,male,23.98,3,yes,southeast,17663.1442 +27,female,24.75,0,yes,southeast,16577.7795 +31,male,28.5,5,no,northeast,6799.458 +53,female,28.1,3,no,southwest,11741.726 +58,male,32.01,1,no,southeast,11946.6259 +44,male,27.4,2,no,southwest,7726.854 +57,male,34.01,0,no,northwest,11356.6609 +29,female,29.59,1,no,southeast,3947.4131 +21,male,35.53,0,no,southeast,1532.4697 +22,female,39.805,0,no,northeast,2755.02095 +41,female,32.965,0,no,northwest,6571.02435 +31,male,26.885,1,no,northeast,4441.21315 +45,female,38.285,0,no,northeast,7935.29115 +22,male,37.62,1,yes,southeast,37165.1638 +48,female,41.23,4,no,northwest,11033.6617 +37,female,34.8,2,yes,southwest,39836.519 +45,male,22.895,2,yes,northwest,21098.55405 +57,female,31.16,0,yes,northwest,43578.9394 +56,female,27.2,0,no,southwest,11073.176 +46,female,27.74,0,no,northwest,8026.6666 +55,female,26.98,0,no,northwest,11082.5772 +21,female,39.49,0,no,southeast,2026.9741 +53,female,24.795,1,no,northwest,10942.13205 +59,male,29.83,3,yes,northeast,30184.9367 +35,male,34.77,2,no,northwest,5729.0053 +64,female,31.3,2,yes,southwest,47291.055 +28,female,37.62,1,no,southeast,3766.8838 +54,female,30.8,3,no,southwest,12105.32 +55,male,38.28,0,no,southeast,10226.2842 +56,male,19.95,0,yes,northeast,22412.6485 +38,male,19.3,0,yes,southwest,15820.699 +41,female,31.6,0,no,southwest,6186.127 +30,male,25.46,0,no,northeast,3645.0894 +18,female,30.115,0,no,northeast,21344.8467 +61,female,29.92,3,yes,southeast,30942.1918 +34,female,27.5,1,no,southwest,5003.853 +20,male,28.025,1,yes,northwest,17560.37975 +19,female,28.4,1,no,southwest,2331.519 +26,male,30.875,2,no,northwest,3877.30425 +29,male,27.94,0,no,southeast,2867.1196 +63,male,35.09,0,yes,southeast,47055.5321 +54,male,33.63,1,no,northwest,10825.2537 +55,female,29.7,2,no,southwest,11881.358 +37,male,30.8,0,no,southwest,4646.759 +21,female,35.72,0,no,northwest,2404.7338 +52,male,32.205,3,no,northeast,11488.31695 +60,male,28.595,0,no,northeast,30259.99556 +58,male,49.06,0,no,southeast,11381.3254 +29,female,27.94,1,yes,southeast,19107.7796 +49,female,27.17,0,no,southeast,8601.3293 +37,female,23.37,2,no,northwest,6686.4313 +44,male,37.1,2,no,southwest,7740.337 +18,male,23.75,0,no,northeast,1705.6245 +20,female,28.975,0,no,northwest,2257.47525 +44,male,31.35,1,yes,northeast,39556.4945 +47,female,33.915,3,no,northwest,10115.00885 +26,female,28.785,0,no,northeast,3385.39915 +19,female,28.3,0,yes,southwest,17081.08 +52,female,37.4,0,no,southwest,9634.538 +32,female,17.765,2,yes,northwest,32734.1863 +38,male,34.7,2,no,southwest,6082.405 +59,female,26.505,0,no,northeast,12815.44495 +61,female,22.04,0,no,northeast,13616.3586 +53,female,35.9,2,no,southwest,11163.568 +19,male,25.555,0,no,northwest,1632.56445 +20,female,28.785,0,no,northeast,2457.21115 +22,female,28.05,0,no,southeast,2155.6815 +19,male,34.1,0,no,southwest,1261.442 +22,male,25.175,0,no,northwest,2045.68525 +54,female,31.9,3,no,southeast,27322.73386 +22,female,36,0,no,southwest,2166.732 +34,male,22.42,2,no,northeast,27375.90478 +26,male,32.49,1,no,northeast,3490.5491 +34,male,25.3,2,yes,southeast,18972.495 +29,male,29.735,2,no,northwest,18157.876 +30,male,28.69,3,yes,northwest,20745.9891 +29,female,38.83,3,no,southeast,5138.2567 +46,male,30.495,3,yes,northwest,40720.55105 +51,female,37.73,1,no,southeast,9877.6077 +53,female,37.43,1,no,northwest,10959.6947 +19,male,28.4,1,no,southwest,1842.519 +35,male,24.13,1,no,northwest,5125.2157 +48,male,29.7,0,no,southeast,7789.635 +32,female,37.145,3,no,northeast,6334.34355 +42,female,23.37,0,yes,northeast,19964.7463 +40,female,25.46,1,no,northeast,7077.1894 +44,male,39.52,0,no,northwest,6948.7008 +48,male,24.42,0,yes,southeast,21223.6758 +18,male,25.175,0,yes,northeast,15518.18025 +30,male,35.53,0,yes,southeast,36950.2567 +50,female,27.83,3,no,southeast,19749.38338 +42,female,26.6,0,yes,northwest,21348.706 +18,female,36.85,0,yes,southeast,36149.4835 +54,male,39.6,1,no,southwest,10450.552 +32,female,29.8,2,no,southwest,5152.134 +37,male,29.64,0,no,northwest,5028.1466 +47,male,28.215,4,no,northeast,10407.08585 +20,female,37,5,no,southwest,4830.63 +32,female,33.155,3,no,northwest,6128.79745 +19,female,31.825,1,no,northwest,2719.27975 +27,male,18.905,3,no,northeast,4827.90495 +63,male,41.47,0,no,southeast,13405.3903 +49,male,30.3,0,no,southwest,8116.68 +18,male,15.96,0,no,northeast,1694.7964 +35,female,34.8,1,no,southwest,5246.047 +24,female,33.345,0,no,northwest,2855.43755 +63,female,37.7,0,yes,southwest,48824.45 +38,male,27.835,2,no,northwest,6455.86265 +54,male,29.2,1,no,southwest,10436.096 +46,female,28.9,2,no,southwest,8823.279 +41,female,33.155,3,no,northeast,8538.28845 +58,male,28.595,0,no,northwest,11735.87905 +18,female,38.28,0,no,southeast,1631.8212 +22,male,19.95,3,no,northeast,4005.4225 +44,female,26.41,0,no,northwest,7419.4779 +44,male,30.69,2,no,southeast,7731.4271 +36,male,41.895,3,yes,northeast,43753.33705 +26,female,29.92,2,no,southeast,3981.9768 +30,female,30.9,3,no,southwest,5325.651 +41,female,32.2,1,no,southwest,6775.961 +29,female,32.11,2,no,northwest,4922.9159 +61,male,31.57,0,no,southeast,12557.6053 +36,female,26.2,0,no,southwest,4883.866 +25,male,25.74,0,no,southeast,2137.6536 +56,female,26.6,1,no,northwest,12044.342 +18,male,34.43,0,no,southeast,1137.4697 +19,male,30.59,0,no,northwest,1639.5631 +39,female,32.8,0,no,southwest,5649.715 +45,female,28.6,2,no,southeast,8516.829 +51,female,18.05,0,no,northwest,9644.2525 +64,female,39.33,0,no,northeast,14901.5167 +19,female,32.11,0,no,northwest,2130.6759 +48,female,32.23,1,no,southeast,8871.1517 +60,female,24.035,0,no,northwest,13012.20865 +27,female,36.08,0,yes,southeast,37133.8982 +46,male,22.3,0,no,southwest,7147.105 +28,female,28.88,1,no,northeast,4337.7352 +59,male,26.4,0,no,southeast,11743.299 +35,male,27.74,2,yes,northeast,20984.0936 +63,female,31.8,0,no,southwest,13880.949 +40,male,41.23,1,no,northeast,6610.1097 +20,male,33,1,no,southwest,1980.07 +40,male,30.875,4,no,northwest,8162.71625 +24,male,28.5,2,no,northwest,3537.703 +34,female,26.73,1,no,southeast,5002.7827 +45,female,30.9,2,no,southwest,8520.026 +41,female,37.1,2,no,southwest,7371.772 +53,female,26.6,0,no,northwest,10355.641 +27,male,23.1,0,no,southeast,2483.736 +26,female,29.92,1,no,southeast,3392.9768 +24,female,23.21,0,no,southeast,25081.76784 +34,female,33.7,1,no,southwest,5012.471 +53,female,33.25,0,no,northeast,10564.8845 +32,male,30.8,3,no,southwest,5253.524 +19,male,34.8,0,yes,southwest,34779.615 +42,male,24.64,0,yes,southeast,19515.5416 +55,male,33.88,3,no,southeast,11987.1682 +28,male,38.06,0,no,southeast,2689.4954 +58,female,41.91,0,no,southeast,24227.33724 +41,female,31.635,1,no,northeast,7358.17565 +47,male,25.46,2,no,northeast,9225.2564 +42,female,36.195,1,no,northwest,7443.64305 +59,female,27.83,3,no,southeast,14001.2867 +19,female,17.8,0,no,southwest,1727.785 +59,male,27.5,1,no,southwest,12333.828 +39,male,24.51,2,no,northwest,6710.1919 +40,female,22.22,2,yes,southeast,19444.2658 +18,female,26.73,0,no,southeast,1615.7667 +31,male,38.39,2,no,southeast,4463.2051 +19,male,29.07,0,yes,northwest,17352.6803 +44,male,38.06,1,no,southeast,7152.6714 +23,female,36.67,2,yes,northeast,38511.6283 +33,female,22.135,1,no,northeast,5354.07465 +55,female,26.8,1,no,southwest,35160.13457 +40,male,35.3,3,no,southwest,7196.867 +63,female,27.74,0,yes,northeast,29523.1656 +54,male,30.02,0,no,northwest,24476.47851 +60,female,38.06,0,no,southeast,12648.7034 +24,male,35.86,0,no,southeast,1986.9334 +19,male,20.9,1,no,southwest,1832.094 +29,male,28.975,1,no,northeast,4040.55825 +18,male,17.29,2,yes,northeast,12829.4551 +63,female,32.2,2,yes,southwest,47305.305 +54,male,34.21,2,yes,southeast,44260.7499 +27,male,30.3,3,no,southwest,4260.744 +50,male,31.825,0,yes,northeast,41097.16175 +55,female,25.365,3,no,northeast,13047.33235 +56,male,33.63,0,yes,northwest,43921.1837 +38,female,40.15,0,no,southeast,5400.9805 +51,male,24.415,4,no,northwest,11520.09985 +19,male,31.92,0,yes,northwest,33750.2918 +58,female,25.2,0,no,southwest,11837.16 +20,female,26.84,1,yes,southeast,17085.2676 +52,male,24.32,3,yes,northeast,24869.8368 +19,male,36.955,0,yes,northwest,36219.40545 +53,female,38.06,3,no,southeast,20462.99766 +46,male,42.35,3,yes,southeast,46151.1245 +40,male,19.8,1,yes,southeast,17179.522 +59,female,32.395,3,no,northeast,14590.63205 +45,male,30.2,1,no,southwest,7441.053 +49,male,25.84,1,no,northeast,9282.4806 +18,male,29.37,1,no,southeast,1719.4363 +50,male,34.2,2,yes,southwest,42856.838 +41,male,37.05,2,no,northwest,7265.7025 +50,male,27.455,1,no,northeast,9617.66245 +25,male,27.55,0,no,northwest,2523.1695 +47,female,26.6,2,no,northeast,9715.841 +19,male,20.615,2,no,northwest,2803.69785 +22,female,24.3,0,no,southwest,2150.469 +59,male,31.79,2,no,southeast,12928.7911 +51,female,21.56,1,no,southeast,9855.1314 +40,female,28.12,1,yes,northeast,22331.5668 +54,male,40.565,3,yes,northeast,48549.17835 +30,male,27.645,1,no,northeast,4237.12655 +55,female,32.395,1,no,northeast,11879.10405 +52,female,31.2,0,no,southwest,9625.92 +46,male,26.62,1,no,southeast,7742.1098 +46,female,48.07,2,no,northeast,9432.9253 +63,female,26.22,0,no,northwest,14256.1928 +59,female,36.765,1,yes,northeast,47896.79135 +52,male,26.4,3,no,southeast,25992.82104 +28,female,33.4,0,no,southwest,3172.018 +29,male,29.64,1,no,northeast,20277.80751 +25,male,45.54,2,yes,southeast,42112.2356 +22,female,28.82,0,no,southeast,2156.7518 +25,male,26.8,3,no,southwest,3906.127 +18,male,22.99,0,no,northeast,1704.5681 +19,male,27.7,0,yes,southwest,16297.846 +47,male,25.41,1,yes,southeast,21978.6769 +31,male,34.39,3,yes,northwest,38746.3551 +48,female,28.88,1,no,northwest,9249.4952 +36,male,27.55,3,no,northeast,6746.7425 +53,female,22.61,3,yes,northeast,24873.3849 +56,female,37.51,2,no,southeast,12265.5069 +28,female,33,2,no,southeast,4349.462 +57,female,38,2,no,southwest,12646.207 +29,male,33.345,2,no,northwest,19442.3535 +28,female,27.5,2,no,southwest,20177.67113 +30,female,33.33,1,no,southeast,4151.0287 +58,male,34.865,0,no,northeast,11944.59435 +41,female,33.06,2,no,northwest,7749.1564 +50,male,26.6,0,no,southwest,8444.474 +19,female,24.7,0,no,southwest,1737.376 +43,male,35.97,3,yes,southeast,42124.5153 +49,male,35.86,0,no,southeast,8124.4084 +27,female,31.4,0,yes,southwest,34838.873 +52,male,33.25,0,no,northeast,9722.7695 +50,male,32.205,0,no,northwest,8835.26495 +54,male,32.775,0,no,northeast,10435.06525 +44,female,27.645,0,no,northwest,7421.19455 +32,male,37.335,1,no,northeast,4667.60765 +34,male,25.27,1,no,northwest,4894.7533 +26,female,29.64,4,no,northeast,24671.66334 +34,male,30.8,0,yes,southwest,35491.64 +57,male,40.945,0,no,northeast,11566.30055 +29,male,27.2,0,no,southwest,2866.091 +40,male,34.105,1,no,northeast,6600.20595 +27,female,23.21,1,no,southeast,3561.8889 +45,male,36.48,2,yes,northwest,42760.5022 +64,female,33.8,1,yes,southwest,47928.03 +52,male,36.7,0,no,southwest,9144.565 +61,female,36.385,1,yes,northeast,48517.56315 +52,male,27.36,0,yes,northwest,24393.6224 +61,female,31.16,0,no,northwest,13429.0354 +56,female,28.785,0,no,northeast,11658.37915 +43,female,35.72,2,no,northeast,19144.57652 +64,male,34.5,0,no,southwest,13822.803 +60,male,25.74,0,no,southeast,12142.5786 +62,male,27.55,1,no,northwest,13937.6665 +50,male,32.3,1,yes,northeast,41919.097 +46,female,27.72,1,no,southeast,8232.6388 +24,female,27.6,0,no,southwest,18955.22017 +62,male,30.02,0,no,northwest,13352.0998 +60,female,27.55,0,no,northeast,13217.0945 +63,male,36.765,0,no,northeast,13981.85035 +49,female,41.47,4,no,southeast,10977.2063 +34,female,29.26,3,no,southeast,6184.2994 +33,male,35.75,2,no,southeast,4889.9995 +46,male,33.345,1,no,northeast,8334.45755 +36,female,29.92,1,no,southeast,5478.0368 +19,male,27.835,0,no,northwest,1635.73365 +57,female,23.18,0,no,northwest,11830.6072 +50,female,25.6,0,no,southwest,8932.084 +30,female,27.7,0,no,southwest,3554.203 +33,male,35.245,0,no,northeast,12404.8791 +18,female,38.28,0,no,southeast,14133.03775 +46,male,27.6,0,no,southwest,24603.04837 +46,male,43.89,3,no,southeast,8944.1151 +47,male,29.83,3,no,northwest,9620.3307 +23,male,41.91,0,no,southeast,1837.2819 +18,female,20.79,0,no,southeast,1607.5101 +48,female,32.3,2,no,northeast,10043.249 +35,male,30.5,1,no,southwest,4751.07 +19,female,21.7,0,yes,southwest,13844.506 +21,female,26.4,1,no,southwest,2597.779 +21,female,21.89,2,no,southeast,3180.5101 +49,female,30.78,1,no,northeast,9778.3472 +56,female,32.3,3,no,northeast,13430.265 +42,female,24.985,2,no,northwest,8017.06115 +44,male,32.015,2,no,northwest,8116.26885 +18,male,30.4,3,no,northeast,3481.868 +61,female,21.09,0,no,northwest,13415.0381 +57,female,22.23,0,no,northeast,12029.2867 +42,female,33.155,1,no,northeast,7639.41745 +26,male,32.9,2,yes,southwest,36085.219 +20,male,33.33,0,no,southeast,1391.5287 +23,female,28.31,0,yes,northwest,18033.9679 +39,female,24.89,3,yes,northeast,21659.9301 +24,male,40.15,0,yes,southeast,38126.2465 +64,female,30.115,3,no,northwest,16455.70785 +62,male,31.46,1,no,southeast,27000.98473 +27,female,17.955,2,yes,northeast,15006.57945 +55,male,30.685,0,yes,northeast,42303.69215 +55,male,33,0,no,southeast,20781.48892 +35,female,43.34,2,no,southeast,5846.9176 +44,male,22.135,2,no,northeast,8302.53565 +19,male,34.4,0,no,southwest,1261.859 +58,female,39.05,0,no,southeast,11856.4115 +50,male,25.365,2,no,northwest,30284.64294 +26,female,22.61,0,no,northwest,3176.8159 +24,female,30.21,3,no,northwest,4618.0799 +48,male,35.625,4,no,northeast,10736.87075 +19,female,37.43,0,no,northwest,2138.0707 +48,male,31.445,1,no,northeast,8964.06055 +49,male,31.35,1,no,northeast,9290.1395 +46,female,32.3,2,no,northeast,9411.005 +46,male,19.855,0,no,northwest,7526.70645 +43,female,34.4,3,no,southwest,8522.003 +21,male,31.02,0,no,southeast,16586.49771 +64,male,25.6,2,no,southwest,14988.432 +18,female,38.17,0,no,southeast,1631.6683 +51,female,20.6,0,no,southwest,9264.797 +47,male,47.52,1,no,southeast,8083.9198 +64,female,32.965,0,no,northwest,14692.66935 +49,male,32.3,3,no,northwest,10269.46 +31,male,20.4,0,no,southwest,3260.199 +52,female,38.38,2,no,northeast,11396.9002 +33,female,24.31,0,no,southeast,4185.0979 +47,female,23.6,1,no,southwest,8539.671 +38,male,21.12,3,no,southeast,6652.5288 +32,male,30.03,1,no,southeast,4074.4537 +19,male,17.48,0,no,northwest,1621.3402 +44,female,20.235,1,yes,northeast,19594.80965 +26,female,17.195,2,yes,northeast,14455.64405 +25,male,23.9,5,no,southwest,5080.096 +19,female,35.15,0,no,northwest,2134.9015 +43,female,35.64,1,no,southeast,7345.7266 +52,male,34.1,0,no,southeast,9140.951 +36,female,22.6,2,yes,southwest,18608.262 +64,male,39.16,1,no,southeast,14418.2804 +63,female,26.98,0,yes,northwest,28950.4692 +64,male,33.88,0,yes,southeast,46889.2612 +61,male,35.86,0,yes,southeast,46599.1084 +40,male,32.775,1,yes,northeast,39125.33225 +25,male,30.59,0,no,northeast,2727.3951 +48,male,30.2,2,no,southwest,8968.33 +45,male,24.31,5,no,southeast,9788.8659 +38,female,27.265,1,no,northeast,6555.07035 +18,female,29.165,0,no,northeast,7323.734819 +21,female,16.815,1,no,northeast,3167.45585 +27,female,30.4,3,no,northwest,18804.7524 +19,male,33.1,0,no,southwest,23082.95533 +29,female,20.235,2,no,northwest,4906.40965 +42,male,26.9,0,no,southwest,5969.723 +60,female,30.5,0,no,southwest,12638.195 +31,male,28.595,1,no,northwest,4243.59005 +60,male,33.11,3,no,southeast,13919.8229 +22,male,31.73,0,no,northeast,2254.7967 +35,male,28.9,3,no,southwest,5926.846 +52,female,46.75,5,no,southeast,12592.5345 +26,male,29.45,0,no,northeast,2897.3235 +31,female,32.68,1,no,northwest,4738.2682 +33,female,33.5,0,yes,southwest,37079.372 +18,male,43.01,0,no,southeast,1149.3959 +59,female,36.52,1,no,southeast,28287.89766 +56,male,26.695,1,yes,northwest,26109.32905 +45,female,33.1,0,no,southwest,7345.084 +60,male,29.64,0,no,northeast,12730.9996 +56,female,25.65,0,no,northwest,11454.0215 +40,female,29.6,0,no,southwest,5910.944 +35,male,38.6,1,no,southwest,4762.329 +39,male,29.6,4,no,southwest,7512.267 +30,male,24.13,1,no,northwest,4032.2407 +24,male,23.4,0,no,southwest,1969.614 +20,male,29.735,0,no,northwest,1769.53165 +32,male,46.53,2,no,southeast,4686.3887 +59,male,37.4,0,no,southwest,21797.0004 +55,female,30.14,2,no,southeast,11881.9696 +57,female,30.495,0,no,northwest,11840.77505 +56,male,39.6,0,no,southwest,10601.412 +40,female,33,3,no,southeast,7682.67 +49,female,36.63,3,no,southeast,10381.4787 +42,male,30,0,yes,southwest,22144.032 +62,female,38.095,2,no,northeast,15230.32405 +56,male,25.935,0,no,northeast,11165.41765 +19,male,25.175,0,no,northwest,1632.03625 +30,female,28.38,1,yes,southeast,19521.9682 +60,female,28.7,1,no,southwest,13224.693 +56,female,33.82,2,no,northwest,12643.3778 +28,female,24.32,1,no,northeast,23288.9284 +18,female,24.09,1,no,southeast,2201.0971 +27,male,32.67,0,no,southeast,2497.0383 +18,female,30.115,0,no,northeast,2203.47185 +19,female,29.8,0,no,southwest,1744.465 +47,female,33.345,0,no,northeast,20878.78443 +54,male,25.1,3,yes,southwest,25382.297 +61,male,28.31,1,yes,northwest,28868.6639 +24,male,28.5,0,yes,northeast,35147.52848 +25,male,35.625,0,no,northwest,2534.39375 +21,male,36.85,0,no,southeast,1534.3045 +23,male,32.56,0,no,southeast,1824.2854 +63,male,41.325,3,no,northwest,15555.18875 +49,male,37.51,2,no,southeast,9304.7019 +18,female,31.35,0,no,southeast,1622.1885 +51,female,39.5,1,no,southwest,9880.068 +48,male,34.3,3,no,southwest,9563.029 +31,female,31.065,0,no,northeast,4347.02335 +54,female,21.47,3,no,northwest,12475.3513 +19,male,28.7,0,no,southwest,1253.936 +44,female,38.06,0,yes,southeast,48885.13561 +53,male,31.16,1,no,northwest,10461.9794 +19,female,32.9,0,no,southwest,1748.774 +61,female,25.08,0,no,southeast,24513.09126 +18,female,25.08,0,no,northeast,2196.4732 +61,male,43.4,0,no,southwest,12574.049 +21,male,25.7,4,yes,southwest,17942.106 +20,male,27.93,0,no,northeast,1967.0227 +31,female,23.6,2,no,southwest,4931.647 +45,male,28.7,2,no,southwest,8027.968 +44,female,23.98,2,no,southeast,8211.1002 +62,female,39.2,0,no,southwest,13470.86 +29,male,34.4,0,yes,southwest,36197.699 +43,male,26.03,0,no,northeast,6837.3687 +51,male,23.21,1,yes,southeast,22218.1149 +19,male,30.25,0,yes,southeast,32548.3405 +38,female,28.93,1,no,southeast,5974.3847 +37,male,30.875,3,no,northwest,6796.86325 +22,male,31.35,1,no,northwest,2643.2685 +21,male,23.75,2,no,northwest,3077.0955 +24,female,25.27,0,no,northeast,3044.2133 +57,female,28.7,0,no,southwest,11455.28 +56,male,32.11,1,no,northeast,11763.0009 +27,male,33.66,0,no,southeast,2498.4144 +51,male,22.42,0,no,northeast,9361.3268 +19,male,30.4,0,no,southwest,1256.299 +39,male,28.3,1,yes,southwest,21082.16 +58,male,35.7,0,no,southwest,11362.755 +20,male,35.31,1,no,southeast,27724.28875 +45,male,30.495,2,no,northwest,8413.46305 +35,female,31,1,no,southwest,5240.765 +31,male,30.875,0,no,northeast,3857.75925 +50,female,27.36,0,no,northeast,25656.57526 +32,female,44.22,0,no,southeast,3994.1778 +51,female,33.915,0,no,northeast,9866.30485 +38,female,37.73,0,no,southeast,5397.6167 +42,male,26.07,1,yes,southeast,38245.59327 +18,female,33.88,0,no,southeast,11482.63485 +19,female,30.59,2,no,northwest,24059.68019 +51,female,25.8,1,no,southwest,9861.025 +46,male,39.425,1,no,northeast,8342.90875 +18,male,25.46,0,no,northeast,1708.0014 +57,male,42.13,1,yes,southeast,48675.5177 +62,female,31.73,0,no,northeast,14043.4767 +59,male,29.7,2,no,southeast,12925.886 +37,male,36.19,0,no,southeast,19214.70553 +64,male,40.48,0,no,southeast,13831.1152 +38,male,28.025,1,no,northeast,6067.12675 +33,female,38.9,3,no,southwest,5972.378 +46,female,30.2,2,no,southwest,8825.086 +46,female,28.05,1,no,southeast,8233.0975 +53,male,31.35,0,no,southeast,27346.04207 +34,female,38,3,no,southwest,6196.448 +20,female,31.79,2,no,southeast,3056.3881 +63,female,36.3,0,no,southeast,13887.204 +54,female,47.41,0,yes,southeast,63770.42801 +54,male,30.21,0,no,northwest,10231.4999 +49,male,25.84,2,yes,northwest,23807.2406 +28,male,35.435,0,no,northeast,3268.84665 +54,female,46.7,2,no,southwest,11538.421 +25,female,28.595,0,no,northeast,3213.62205 +43,female,46.2,0,yes,southeast,45863.205 +63,male,30.8,0,no,southwest,13390.559 +32,female,28.93,0,no,southeast,3972.9247 +62,male,21.4,0,no,southwest,12957.118 +52,female,31.73,2,no,northwest,11187.6567 +25,female,41.325,0,no,northeast,17878.90068 +28,male,23.8,2,no,southwest,3847.674 +46,male,33.44,1,no,northeast,8334.5896 +34,male,34.21,0,no,southeast,3935.1799 +35,female,34.105,3,yes,northwest,39983.42595 +19,male,35.53,0,no,northwest,1646.4297 +46,female,19.95,2,no,northwest,9193.8385 +54,female,32.68,0,no,northeast,10923.9332 +27,male,30.5,0,no,southwest,2494.022 +50,male,44.77,1,no,southeast,9058.7303 +18,female,32.12,2,no,southeast,2801.2588 +19,female,30.495,0,no,northwest,2128.43105 +38,female,40.565,1,no,northwest,6373.55735 +41,male,30.59,2,no,northwest,7256.7231 +49,female,31.9,5,no,southwest,11552.904 +48,male,40.565,2,yes,northwest,45702.02235 +31,female,29.1,0,no,southwest,3761.292 +18,female,37.29,1,no,southeast,2219.4451 +30,female,43.12,2,no,southeast,4753.6368 +62,female,36.86,1,no,northeast,31620.00106 +57,female,34.295,2,no,northeast,13224.05705 +58,female,27.17,0,no,northwest,12222.8983 +22,male,26.84,0,no,southeast,1664.9996 +31,female,38.095,1,yes,northeast,58571.07448 +52,male,30.2,1,no,southwest,9724.53 +25,female,23.465,0,no,northeast,3206.49135 +59,male,25.46,1,no,northeast,12913.9924 +19,male,30.59,0,no,northwest,1639.5631 +39,male,45.43,2,no,southeast,6356.2707 +32,female,23.65,1,no,southeast,17626.23951 +19,male,20.7,0,no,southwest,1242.816 +33,female,28.27,1,no,southeast,4779.6023 +21,male,20.235,3,no,northeast,3861.20965 +34,female,30.21,1,yes,northwest,43943.8761 +61,female,35.91,0,no,northeast,13635.6379 +38,female,30.69,1,no,southeast,5976.8311 +58,female,29,0,no,southwest,11842.442 +47,male,19.57,1,no,northwest,8428.0693 +20,male,31.13,2,no,southeast,2566.4707 +21,female,21.85,1,yes,northeast,15359.1045 +41,male,40.26,0,no,southeast,5709.1644 +46,female,33.725,1,no,northeast,8823.98575 +42,female,29.48,2,no,southeast,7640.3092 +34,female,33.25,1,no,northeast,5594.8455 +43,male,32.6,2,no,southwest,7441.501 +52,female,37.525,2,no,northwest,33471.97189 +18,female,39.16,0,no,southeast,1633.0444 +51,male,31.635,0,no,northwest,9174.13565 +56,female,25.3,0,no,southwest,11070.535 +64,female,39.05,3,no,southeast,16085.1275 +19,female,28.31,0,yes,northwest,17468.9839 +51,female,34.1,0,no,southeast,9283.562 +27,female,25.175,0,no,northeast,3558.62025 +59,female,23.655,0,yes,northwest,25678.77845 +28,male,26.98,2,no,northeast,4435.0942 +30,male,37.8,2,yes,southwest,39241.442 +47,female,29.37,1,no,southeast,8547.6913 +38,female,34.8,2,no,southwest,6571.544 +18,female,33.155,0,no,northeast,2207.69745 +34,female,19,3,no,northeast,6753.038 +20,female,33,0,no,southeast,1880.07 +47,female,36.63,1,yes,southeast,42969.8527 +56,female,28.595,0,no,northeast,11658.11505 +49,male,25.6,2,yes,southwest,23306.547 +19,female,33.11,0,yes,southeast,34439.8559 +55,female,37.1,0,no,southwest,10713.644 +30,male,31.4,1,no,southwest,3659.346 +37,male,34.1,4,yes,southwest,40182.246 +49,female,21.3,1,no,southwest,9182.17 +18,male,33.535,0,yes,northeast,34617.84065 +59,male,28.785,0,no,northwest,12129.61415 +29,female,26.03,0,no,northwest,3736.4647 +36,male,28.88,3,no,northeast,6748.5912 +33,male,42.46,1,no,southeast,11326.71487 +58,male,38,0,no,southwest,11365.952 +44,female,38.95,0,yes,northwest,42983.4585 +53,male,36.1,1,no,southwest,10085.846 +24,male,29.3,0,no,southwest,1977.815 +29,female,35.53,0,no,southeast,3366.6697 +40,male,22.705,2,no,northeast,7173.35995 +51,male,39.7,1,no,southwest,9391.346 +64,male,38.19,0,no,northeast,14410.9321 +19,female,24.51,1,no,northwest,2709.1119 +35,female,38.095,2,no,northeast,24915.04626 +39,male,26.41,0,yes,northeast,20149.3229 +56,male,33.66,4,no,southeast,12949.1554 +33,male,42.4,5,no,southwest,6666.243 +42,male,28.31,3,yes,northwest,32787.45859 +61,male,33.915,0,no,northeast,13143.86485 +23,female,34.96,3,no,northwest,4466.6214 +43,male,35.31,2,no,southeast,18806.14547 +48,male,30.78,3,no,northeast,10141.1362 +39,male,26.22,1,no,northwest,6123.5688 +40,female,23.37,3,no,northeast,8252.2843 +18,male,28.5,0,no,northeast,1712.227 +58,female,32.965,0,no,northeast,12430.95335 +49,female,42.68,2,no,southeast,9800.8882 +53,female,39.6,1,no,southeast,10579.711 +48,female,31.13,0,no,southeast,8280.6227 +45,female,36.3,2,no,southeast,8527.532 +59,female,35.2,0,no,southeast,12244.531 +52,female,25.3,2,yes,southeast,24667.419 +26,female,42.4,1,no,southwest,3410.324 +27,male,33.155,2,no,northwest,4058.71245 +48,female,35.91,1,no,northeast,26392.26029 +57,female,28.785,4,no,northeast,14394.39815 +37,male,46.53,3,no,southeast,6435.6237 +57,female,23.98,1,no,southeast,22192.43711 +32,female,31.54,1,no,northeast,5148.5526 +18,male,33.66,0,no,southeast,1136.3994 +64,female,22.99,0,yes,southeast,27037.9141 +43,male,38.06,2,yes,southeast,42560.4304 +49,male,28.7,1,no,southwest,8703.456 +40,female,32.775,2,yes,northwest,40003.33225 +62,male,32.015,0,yes,northeast,45710.20785 +40,female,29.81,1,no,southeast,6500.2359 +30,male,31.57,3,no,southeast,4837.5823 +29,female,31.16,0,no,northeast,3943.5954 +36,male,29.7,0,no,southeast,4399.731 +41,female,31.02,0,no,southeast,6185.3208 +44,female,43.89,2,yes,southeast,46200.9851 +45,male,21.375,0,no,northwest,7222.78625 +55,female,40.81,3,no,southeast,12485.8009 +60,male,31.35,3,yes,northwest,46130.5265 +56,male,36.1,3,no,southwest,12363.547 +49,female,23.18,2,no,northwest,10156.7832 +21,female,17.4,1,no,southwest,2585.269 +19,male,20.3,0,no,southwest,1242.26 +39,male,35.3,2,yes,southwest,40103.89 +53,male,24.32,0,no,northwest,9863.4718 +33,female,18.5,1,no,southwest,4766.022 +53,male,26.41,2,no,northeast,11244.3769 +42,male,26.125,2,no,northeast,7729.64575 +40,male,41.69,0,no,southeast,5438.7491 +47,female,24.1,1,no,southwest,26236.57997 +27,male,31.13,1,yes,southeast,34806.4677 +21,male,27.36,0,no,northeast,2104.1134 +47,male,36.2,1,no,southwest,8068.185 +20,male,32.395,1,no,northwest,2362.22905 +24,male,23.655,0,no,northwest,2352.96845 +27,female,34.8,1,no,southwest,3577.999 +26,female,40.185,0,no,northwest,3201.24515 +53,female,32.3,2,no,northeast,29186.48236 +41,male,35.75,1,yes,southeast,40273.6455 +56,male,33.725,0,no,northwest,10976.24575 +23,female,39.27,2,no,southeast,3500.6123 +21,female,34.87,0,no,southeast,2020.5523 +50,female,44.745,0,no,northeast,9541.69555 +53,male,41.47,0,no,southeast,9504.3103 +34,female,26.41,1,no,northwest,5385.3379 +47,female,29.545,1,no,northwest,8930.93455 +33,female,32.9,2,no,southwest,5375.038 +51,female,38.06,0,yes,southeast,44400.4064 +49,male,28.69,3,no,northwest,10264.4421 +31,female,30.495,3,no,northeast,6113.23105 +36,female,27.74,0,no,northeast,5469.0066 +18,male,35.2,1,no,southeast,1727.54 +50,female,23.54,2,no,southeast,10107.2206 +43,female,30.685,2,no,northwest,8310.83915 +20,male,40.47,0,no,northeast,1984.4533 +24,female,22.6,0,no,southwest,2457.502 +60,male,28.9,0,no,southwest,12146.971 +49,female,22.61,1,no,northwest,9566.9909 +60,male,24.32,1,no,northwest,13112.6048 +51,female,36.67,2,no,northwest,10848.1343 +58,female,33.44,0,no,northwest,12231.6136 +51,female,40.66,0,no,northeast,9875.6804 +53,male,36.6,3,no,southwest,11264.541 +62,male,37.4,0,no,southwest,12979.358 +19,male,35.4,0,no,southwest,1263.249 +50,female,27.075,1,no,northeast,10106.13425 +30,female,39.05,3,yes,southeast,40932.4295 +41,male,28.405,1,no,northwest,6664.68595 +29,female,21.755,1,yes,northeast,16657.71745 +18,female,40.28,0,no,northeast,2217.6012 +41,female,36.08,1,no,southeast,6781.3542 +35,male,24.42,3,yes,southeast,19361.9988 +53,male,21.4,1,no,southwest,10065.413 +24,female,30.1,3,no,southwest,4234.927 +48,female,27.265,1,no,northeast,9447.25035 +59,female,32.1,3,no,southwest,14007.222 +49,female,34.77,1,no,northwest,9583.8933 +37,female,38.39,0,yes,southeast,40419.0191 +26,male,23.7,2,no,southwest,3484.331 +23,male,31.73,3,yes,northeast,36189.1017 +29,male,35.5,2,yes,southwest,44585.45587 +45,male,24.035,2,no,northeast,8604.48365 +27,male,29.15,0,yes,southeast,18246.4955 +53,male,34.105,0,yes,northeast,43254.41795 +31,female,26.62,0,no,southeast,3757.8448 +50,male,26.41,0,no,northwest,8827.2099 +50,female,30.115,1,no,northwest,9910.35985 +34,male,27,2,no,southwest,11737.84884 +19,male,21.755,0,no,northwest,1627.28245 +47,female,36,1,no,southwest,8556.907 +28,male,30.875,0,no,northwest,3062.50825 +37,female,26.4,0,yes,southeast,19539.243 +21,male,28.975,0,no,northwest,1906.35825 +64,male,37.905,0,no,northwest,14210.53595 +58,female,22.77,0,no,southeast,11833.7823 +24,male,33.63,4,no,northeast,17128.42608 +31,male,27.645,2,no,northeast,5031.26955 +39,female,22.8,3,no,northeast,7985.815 +47,female,27.83,0,yes,southeast,23065.4207 +30,male,37.43,3,no,northeast,5428.7277 +18,male,38.17,0,yes,southeast,36307.7983 +22,female,34.58,2,no,northeast,3925.7582 +23,male,35.2,1,no,southwest,2416.955 +33,male,27.1,1,yes,southwest,19040.876 +27,male,26.03,0,no,northeast,3070.8087 +45,female,25.175,2,no,northeast,9095.06825 +57,female,31.825,0,no,northwest,11842.62375 +47,male,32.3,1,no,southwest,8062.764 +42,female,29,1,no,southwest,7050.642 +64,female,39.7,0,no,southwest,14319.031 +38,female,19.475,2,no,northwest,6933.24225 +61,male,36.1,3,no,southwest,27941.28758 +53,female,26.7,2,no,southwest,11150.78 +44,female,36.48,0,no,northeast,12797.20962 +19,female,28.88,0,yes,northwest,17748.5062 +41,male,34.2,2,no,northwest,7261.741 +51,male,33.33,3,no,southeast,10560.4917 +40,male,32.3,2,no,northwest,6986.697 +45,male,39.805,0,no,northeast,7448.40395 +35,male,34.32,3,no,southeast,5934.3798 +53,male,28.88,0,no,northwest,9869.8102 +30,male,24.4,3,yes,southwest,18259.216 +18,male,41.14,0,no,southeast,1146.7966 +51,male,35.97,1,no,southeast,9386.1613 +50,female,27.6,1,yes,southwest,24520.264 +31,female,29.26,1,no,southeast,4350.5144 +35,female,27.7,3,no,southwest,6414.178 +60,male,36.955,0,no,northeast,12741.16745 +21,male,36.86,0,no,northwest,1917.3184 +29,male,22.515,3,no,northeast,5209.57885 +62,female,29.92,0,no,southeast,13457.9608 +39,female,41.8,0,no,southeast,5662.225 +19,male,27.6,0,no,southwest,1252.407 +22,female,23.18,0,no,northeast,2731.9122 +53,male,20.9,0,yes,southeast,21195.818 +39,female,31.92,2,no,northwest,7209.4918 +27,male,28.5,0,yes,northwest,18310.742 +30,male,44.22,2,no,southeast,4266.1658 +30,female,22.895,1,no,northeast,4719.52405 +58,female,33.1,0,no,southwest,11848.141 +33,male,24.795,0,yes,northeast,17904.52705 +42,female,26.18,1,no,southeast,7046.7222 +64,female,35.97,0,no,southeast,14313.8463 +21,male,22.3,1,no,southwest,2103.08 +18,female,42.24,0,yes,southeast,38792.6856 +23,male,26.51,0,no,southeast,1815.8759 +45,female,35.815,0,no,northwest,7731.85785 +40,female,41.42,1,no,northwest,28476.73499 +19,female,36.575,0,no,northwest,2136.88225 +18,male,30.14,0,no,southeast,1131.5066 +25,male,25.84,1,no,northeast,3309.7926 +46,female,30.8,3,no,southwest,9414.92 +33,female,42.94,3,no,northwest,6360.9936 +54,male,21.01,2,no,southeast,11013.7119 +28,male,22.515,2,no,northeast,4428.88785 +36,male,34.43,2,no,southeast,5584.3057 +20,female,31.46,0,no,southeast,1877.9294 +24,female,24.225,0,no,northwest,2842.76075 +23,male,37.1,3,no,southwest,3597.596 +47,female,26.125,1,yes,northeast,23401.30575 +33,female,35.53,0,yes,northwest,55135.40209 +45,male,33.7,1,no,southwest,7445.918 +26,male,17.67,0,no,northwest,2680.9493 +18,female,31.13,0,no,southeast,1621.8827 +44,female,29.81,2,no,southeast,8219.2039 +60,male,24.32,0,no,northwest,12523.6048 +64,female,31.825,2,no,northeast,16069.08475 +56,male,31.79,2,yes,southeast,43813.8661 +36,male,28.025,1,yes,northeast,20773.62775 +41,male,30.78,3,yes,northeast,39597.4072 +39,male,21.85,1,no,northwest,6117.4945 +63,male,33.1,0,no,southwest,13393.756 +36,female,25.84,0,no,northwest,5266.3656 +28,female,23.845,2,no,northwest,4719.73655 +58,male,34.39,0,no,northwest,11743.9341 +36,male,33.82,1,no,northwest,5377.4578 +42,male,35.97,2,no,southeast,7160.3303 +36,male,31.5,0,no,southwest,4402.233 +56,female,28.31,0,no,northeast,11657.7189 +35,female,23.465,2,no,northeast,6402.29135 +59,female,31.35,0,no,northwest,12622.1795 +21,male,31.1,0,no,southwest,1526.312 +59,male,24.7,0,no,northeast,12323.936 +23,female,32.78,2,yes,southeast,36021.0112 +57,female,29.81,0,yes,southeast,27533.9129 +53,male,30.495,0,no,northeast,10072.05505 +60,female,32.45,0,yes,southeast,45008.9555 +51,female,34.2,1,no,southwest,9872.701 +23,male,50.38,1,no,southeast,2438.0552 +27,female,24.1,0,no,southwest,2974.126 +55,male,32.775,0,no,northwest,10601.63225 +37,female,30.78,0,yes,northeast,37270.1512 +61,male,32.3,2,no,northwest,14119.62 +46,female,35.53,0,yes,northeast,42111.6647 +53,female,23.75,2,no,northeast,11729.6795 +49,female,23.845,3,yes,northeast,24106.91255 +20,female,29.6,0,no,southwest,1875.344 +48,female,33.11,0,yes,southeast,40974.1649 +25,male,24.13,0,yes,northwest,15817.9857 +25,female,32.23,1,no,southeast,18218.16139 +57,male,28.1,0,no,southwest,10965.446 +37,female,47.6,2,yes,southwest,46113.511 +38,female,28,3,no,southwest,7151.092 +55,female,33.535,2,no,northwest,12269.68865 +36,female,19.855,0,no,northeast,5458.04645 +51,male,25.4,0,no,southwest,8782.469 +40,male,29.9,2,no,southwest,6600.361 +18,male,37.29,0,no,southeast,1141.4451 +57,male,43.7,1,no,southwest,11576.13 +61,male,23.655,0,no,northeast,13129.60345 +25,female,24.3,3,no,southwest,4391.652 +50,male,36.2,0,no,southwest,8457.818 +26,female,29.48,1,no,southeast,3392.3652 +42,male,24.86,0,no,southeast,5966.8874 +43,male,30.1,1,no,southwest,6849.026 +44,male,21.85,3,no,northeast,8891.1395 +23,female,28.12,0,no,northwest,2690.1138 +49,female,27.1,1,no,southwest,26140.3603 +33,male,33.44,5,no,southeast,6653.7886 +41,male,28.8,1,no,southwest,6282.235 +37,female,29.5,2,no,southwest,6311.952 +22,male,34.8,3,no,southwest,3443.064 +23,male,27.36,1,no,northwest,2789.0574 +21,female,22.135,0,no,northeast,2585.85065 +51,female,37.05,3,yes,northeast,46255.1125 +25,male,26.695,4,no,northwest,4877.98105 +32,male,28.93,1,yes,southeast,19719.6947 +57,male,28.975,0,yes,northeast,27218.43725 +36,female,30.02,0,no,northwest,5272.1758 +22,male,39.5,0,no,southwest,1682.597 +57,male,33.63,1,no,northwest,11945.1327 +64,female,26.885,0,yes,northwest,29330.98315 +36,female,29.04,4,no,southeast,7243.8136 +54,male,24.035,0,no,northeast,10422.91665 +47,male,38.94,2,yes,southeast,44202.6536 +62,male,32.11,0,no,northeast,13555.0049 +61,female,44,0,no,southwest,13063.883 +43,female,20.045,2,yes,northeast,19798.05455 +19,male,25.555,1,no,northwest,2221.56445 +18,female,40.26,0,no,southeast,1634.5734 +19,female,22.515,0,no,northwest,2117.33885 +49,male,22.515,0,no,northeast,8688.85885 +60,male,40.92,0,yes,southeast,48673.5588 +26,male,27.265,3,no,northeast,4661.28635 +49,male,36.85,0,no,southeast,8125.7845 +60,female,35.1,0,no,southwest,12644.589 +26,female,29.355,2,no,northeast,4564.19145 +27,male,32.585,3,no,northeast,4846.92015 +44,female,32.34,1,no,southeast,7633.7206 +63,male,39.8,3,no,southwest,15170.069 +32,female,24.6,0,yes,southwest,17496.306 +22,male,28.31,1,no,northwest,2639.0429 +18,male,31.73,0,yes,northeast,33732.6867 +59,female,26.695,3,no,northwest,14382.70905 +44,female,27.5,1,no,southwest,7626.993 +33,male,24.605,2,no,northwest,5257.50795 +24,female,33.99,0,no,southeast,2473.3341 +43,female,26.885,0,yes,northwest,21774.32215 +45,male,22.895,0,yes,northeast,35069.37452 +61,female,28.2,0,no,southwest,13041.921 +35,female,34.21,1,no,southeast,5245.2269 +62,female,25,0,no,southwest,13451.122 +62,female,33.2,0,no,southwest,13462.52 +38,male,31,1,no,southwest,5488.262 +34,male,35.815,0,no,northwest,4320.41085 +43,male,23.2,0,no,southwest,6250.435 +50,male,32.11,2,no,northeast,25333.33284 +19,female,23.4,2,no,southwest,2913.569 +57,female,20.1,1,no,southwest,12032.326 +62,female,39.16,0,no,southeast,13470.8044 +41,male,34.21,1,no,southeast,6289.7549 +26,male,46.53,1,no,southeast,2927.0647 +39,female,32.5,1,no,southwest,6238.298 +46,male,25.8,5,no,southwest,10096.97 +45,female,35.3,0,no,southwest,7348.142 +32,male,37.18,2,no,southeast,4673.3922 +59,female,27.5,0,no,southwest,12233.828 +44,male,29.735,2,no,northeast,32108.66282 +39,female,24.225,5,no,northwest,8965.79575 +18,male,26.18,2,no,southeast,2304.0022 +53,male,29.48,0,no,southeast,9487.6442 +18,male,23.21,0,no,southeast,1121.8739 +50,female,46.09,1,no,southeast,9549.5651 +18,female,40.185,0,no,northeast,2217.46915 +19,male,22.61,0,no,northwest,1628.4709 +62,male,39.93,0,no,southeast,12982.8747 +56,female,35.8,1,no,southwest,11674.13 +42,male,35.8,2,no,southwest,7160.094 +37,male,34.2,1,yes,northeast,39047.285 +42,male,31.255,0,no,northwest,6358.77645 +25,male,29.7,3,yes,southwest,19933.458 +57,male,18.335,0,no,northeast,11534.87265 +51,male,42.9,2,yes,southeast,47462.894 +30,female,28.405,1,no,northwest,4527.18295 +44,male,30.2,2,yes,southwest,38998.546 +34,male,27.835,1,yes,northwest,20009.63365 +31,male,39.49,1,no,southeast,3875.7341 +54,male,30.8,1,yes,southeast,41999.52 +24,male,26.79,1,no,northwest,12609.88702 +43,male,34.96,1,yes,northeast,41034.2214 +48,male,36.67,1,no,northwest,28468.91901 +19,female,39.615,1,no,northwest,2730.10785 +29,female,25.9,0,no,southwest,3353.284 +63,female,35.2,1,no,southeast,14474.675 +46,male,24.795,3,no,northeast,9500.57305 +52,male,36.765,2,no,northwest,26467.09737 +35,male,27.1,1,no,southwest,4746.344 +51,male,24.795,2,yes,northwest,23967.38305 +44,male,25.365,1,no,northwest,7518.02535 +21,male,25.745,2,no,northeast,3279.86855 +39,female,34.32,5,no,southeast,8596.8278 +50,female,28.16,3,no,southeast,10702.6424 +34,female,23.56,0,no,northeast,4992.3764 +22,female,20.235,0,no,northwest,2527.81865 +19,female,40.5,0,no,southwest,1759.338 +26,male,35.42,0,no,southeast,2322.6218 +29,male,22.895,0,yes,northeast,16138.76205 +48,male,40.15,0,no,southeast,7804.1605 +26,male,29.15,1,no,southeast,2902.9065 +45,female,39.995,3,no,northeast,9704.66805 +36,female,29.92,0,no,southeast,4889.0368 +54,male,25.46,1,no,northeast,25517.11363 +34,male,21.375,0,no,northeast,4500.33925 +31,male,25.9,3,yes,southwest,19199.944 +27,female,30.59,1,no,northeast,16796.41194 +20,male,30.115,5,no,northeast,4915.05985 +44,female,25.8,1,no,southwest,7624.63 +43,male,30.115,3,no,northwest,8410.04685 +45,female,27.645,1,no,northwest,28340.18885 +34,male,34.675,0,no,northeast,4518.82625 +24,female,20.52,0,yes,northeast,14571.8908 +26,female,19.8,1,no,southwest,3378.91 +38,female,27.835,2,no,northeast,7144.86265 +50,female,31.6,2,no,southwest,10118.424 +38,male,28.27,1,no,southeast,5484.4673 +27,female,20.045,3,yes,northwest,16420.49455 +39,female,23.275,3,no,northeast,7986.47525 +39,female,34.1,3,no,southwest,7418.522 +63,female,36.85,0,no,southeast,13887.9685 +33,female,36.29,3,no,northeast,6551.7501 +36,female,26.885,0,no,northwest,5267.81815 +30,male,22.99,2,yes,northwest,17361.7661 +24,male,32.7,0,yes,southwest,34472.841 +24,male,25.8,0,no,southwest,1972.95 +48,male,29.6,0,no,southwest,21232.18226 +47,male,19.19,1,no,northeast,8627.5411 +29,male,31.73,2,no,northwest,4433.3877 +28,male,29.26,2,no,northeast,4438.2634 +47,male,28.215,3,yes,northwest,24915.22085 +25,male,24.985,2,no,northeast,23241.47453 +51,male,27.74,1,no,northeast,9957.7216 +48,female,22.8,0,no,southwest,8269.044 +43,male,20.13,2,yes,southeast,18767.7377 +61,female,33.33,4,no,southeast,36580.28216 +48,male,32.3,1,no,northwest,8765.249 +38,female,27.6,0,no,southwest,5383.536 +59,male,25.46,0,no,northwest,12124.9924 +19,female,24.605,1,no,northwest,2709.24395 +26,female,34.2,2,no,southwest,3987.926 +54,female,35.815,3,no,northwest,12495.29085 +21,female,32.68,2,no,northwest,26018.95052 +51,male,37,0,no,southwest,8798.593 +22,female,31.02,3,yes,southeast,35595.5898 +47,male,36.08,1,yes,southeast,42211.1382 +18,male,23.32,1,no,southeast,1711.0268 +47,female,45.32,1,no,southeast,8569.8618 +21,female,34.6,0,no,southwest,2020.177 +19,male,26.03,1,yes,northwest,16450.8947 +23,male,18.715,0,no,northwest,21595.38229 +54,male,31.6,0,no,southwest,9850.432 +37,female,17.29,2,no,northeast,6877.9801 +46,female,23.655,1,yes,northwest,21677.28345 +55,female,35.2,0,yes,southeast,44423.803 +30,female,27.93,0,no,northeast,4137.5227 +18,male,21.565,0,yes,northeast,13747.87235 +61,male,38.38,0,no,northwest,12950.0712 +54,female,23,3,no,southwest,12094.478 +22,male,37.07,2,yes,southeast,37484.4493 +45,female,30.495,1,yes,northwest,39725.51805 +22,male,28.88,0,no,northeast,2250.8352 +19,male,27.265,2,no,northwest,22493.65964 +35,female,28.025,0,yes,northwest,20234.85475 +18,male,23.085,0,no,northeast,1704.70015 +20,male,30.685,0,yes,northeast,33475.81715 +28,female,25.8,0,no,southwest,3161.454 +55,male,35.245,1,no,northeast,11394.06555 +43,female,24.7,2,yes,northwest,21880.82 +43,female,25.08,0,no,northeast,7325.0482 +22,male,52.58,1,yes,southeast,44501.3982 +25,female,22.515,1,no,northwest,3594.17085 +49,male,30.9,0,yes,southwest,39727.614 +44,female,36.955,1,no,northwest,8023.13545 +64,male,26.41,0,no,northeast,14394.5579 +49,male,29.83,1,no,northeast,9288.0267 +47,male,29.8,3,yes,southwest,25309.489 +27,female,21.47,0,no,northwest,3353.4703 +55,male,27.645,0,no,northwest,10594.50155 +48,female,28.9,0,no,southwest,8277.523 +45,female,31.79,0,no,southeast,17929.30337 +24,female,39.49,0,no,southeast,2480.9791 +32,male,33.82,1,no,northwest,4462.7218 +24,male,32.01,0,no,southeast,1981.5819 +57,male,27.94,1,no,southeast,11554.2236 +59,male,41.14,1,yes,southeast,48970.2476 +36,male,28.595,3,no,northwest,6548.19505 +29,female,25.6,4,no,southwest,5708.867 +42,female,25.3,1,no,southwest,7045.499 +48,male,37.29,2,no,southeast,8978.1851 +39,male,42.655,0,no,northeast,5757.41345 +63,male,21.66,1,no,northwest,14349.8544 +54,female,31.9,1,no,southeast,10928.849 +37,male,37.07,1,yes,southeast,39871.7043 +63,male,31.445,0,no,northeast,13974.45555 +21,male,31.255,0,no,northwest,1909.52745 +54,female,28.88,2,no,northeast,12096.6512 +60,female,18.335,0,no,northeast,13204.28565 +32,female,29.59,1,no,southeast,4562.8421 +47,female,32,1,no,southwest,8551.347 +21,male,26.03,0,no,northeast,2102.2647 +28,male,31.68,0,yes,southeast,34672.1472 +63,male,33.66,3,no,southeast,15161.5344 +18,male,21.78,2,no,southeast,11884.04858 +32,male,27.835,1,no,northwest,4454.40265 +38,male,19.95,1,no,northwest,5855.9025 +32,male,31.5,1,no,southwest,4076.497 +62,female,30.495,2,no,northwest,15019.76005 +39,female,18.3,5,yes,southwest,19023.26 +55,male,28.975,0,no,northeast,10796.35025 +57,male,31.54,0,no,northwest,11353.2276 +52,male,47.74,1,no,southeast,9748.9106 +56,male,22.1,0,no,southwest,10577.087 +47,male,36.19,0,yes,southeast,41676.0811 +55,female,29.83,0,no,northeast,11286.5387 +23,male,32.7,3,no,southwest,3591.48 +22,female,30.4,0,yes,northwest,33907.548 +50,female,33.7,4,no,southwest,11299.343 +18,female,31.35,4,no,northeast,4561.1885 +51,female,34.96,2,yes,northeast,44641.1974 +22,male,33.77,0,no,southeast,1674.6323 +52,female,30.875,0,no,northeast,23045.56616 +25,female,33.99,1,no,southeast,3227.1211 +33,female,19.095,2,yes,northeast,16776.30405 +53,male,28.6,3,no,southwest,11253.421 +29,male,38.94,1,no,southeast,3471.4096 +58,male,36.08,0,no,southeast,11363.2832 +37,male,29.8,0,no,southwest,20420.60465 +54,female,31.24,0,no,southeast,10338.9316 +49,female,29.925,0,no,northwest,8988.15875 +50,female,26.22,2,no,northwest,10493.9458 +26,male,30,1,no,southwest,2904.088 +45,male,20.35,3,no,southeast,8605.3615 +54,female,32.3,1,no,northeast,11512.405 +38,male,38.39,3,yes,southeast,41949.2441 +48,female,25.85,3,yes,southeast,24180.9335 +28,female,26.315,3,no,northwest,5312.16985 +23,male,24.51,0,no,northeast,2396.0959 +55,male,32.67,1,no,southeast,10807.4863 +41,male,29.64,5,no,northeast,9222.4026 +25,male,33.33,2,yes,southeast,36124.5737 +33,male,35.75,1,yes,southeast,38282.7495 +30,female,19.95,3,no,northwest,5693.4305 +23,female,31.4,0,yes,southwest,34166.273 +46,male,38.17,2,no,southeast,8347.1643 +53,female,36.86,3,yes,northwest,46661.4424 +27,female,32.395,1,no,northeast,18903.49141 +23,female,42.75,1,yes,northeast,40904.1995 +63,female,25.08,0,no,northwest,14254.6082 +55,male,29.9,0,no,southwest,10214.636 +35,female,35.86,2,no,southeast,5836.5204 +34,male,32.8,1,no,southwest,14358.36437 +19,female,18.6,0,no,southwest,1728.897 +39,female,23.87,5,no,southeast,8582.3023 +27,male,45.9,2,no,southwest,3693.428 +57,male,40.28,0,no,northeast,20709.02034 +52,female,18.335,0,no,northwest,9991.03765 +28,male,33.82,0,no,northwest,19673.33573 +50,female,28.12,3,no,northwest,11085.5868 +44,female,25,1,no,southwest,7623.518 +26,female,22.23,0,no,northwest,3176.2877 +33,male,30.25,0,no,southeast,3704.3545 +19,female,32.49,0,yes,northwest,36898.73308 +50,male,37.07,1,no,southeast,9048.0273 +41,female,32.6,3,no,southwest,7954.517 +52,female,24.86,0,no,southeast,27117.99378 +39,male,32.34,2,no,southeast,6338.0756 +50,male,32.3,2,no,southwest,9630.397 +52,male,32.775,3,no,northwest,11289.10925 +60,male,32.8,0,yes,southwest,52590.82939 +20,female,31.92,0,no,northwest,2261.5688 +55,male,21.5,1,no,southwest,10791.96 +42,male,34.1,0,no,southwest,5979.731 +18,female,30.305,0,no,northeast,2203.73595 +58,female,36.48,0,no,northwest,12235.8392 +43,female,32.56,3,yes,southeast,40941.2854 +35,female,35.815,1,no,northwest,5630.45785 +48,female,27.93,4,no,northwest,11015.1747 +36,female,22.135,3,no,northeast,7228.21565 +19,male,44.88,0,yes,southeast,39722.7462 +23,female,23.18,2,no,northwest,14426.07385 +20,female,30.59,0,no,northeast,2459.7201 +32,female,41.1,0,no,southwest,3989.841 +43,female,34.58,1,no,northwest,7727.2532 +34,male,42.13,2,no,southeast,5124.1887 +30,male,38.83,1,no,southeast,18963.17192 +18,female,28.215,0,no,northeast,2200.83085 +41,female,28.31,1,no,northwest,7153.5539 +35,female,26.125,0,no,northeast,5227.98875 +57,male,40.37,0,no,southeast,10982.5013 +29,female,24.6,2,no,southwest,4529.477 +32,male,35.2,2,no,southwest,4670.64 +37,female,34.105,1,no,northwest,6112.35295 +18,male,27.36,1,yes,northeast,17178.6824 +43,female,26.7,2,yes,southwest,22478.6 +56,female,41.91,0,no,southeast,11093.6229 +38,male,29.26,2,no,northwest,6457.8434 +29,male,32.11,2,no,northwest,4433.9159 +22,female,27.1,0,no,southwest,2154.361 +52,female,24.13,1,yes,northwest,23887.6627 +40,female,27.4,1,no,southwest,6496.886 +23,female,34.865,0,no,northeast,2899.48935 +31,male,29.81,0,yes,southeast,19350.3689 +42,female,41.325,1,no,northeast,7650.77375 +24,female,29.925,0,no,northwest,2850.68375 +25,female,30.3,0,no,southwest,2632.992 +48,female,27.36,1,no,northeast,9447.3824 +23,female,28.49,1,yes,southeast,18328.2381 +45,male,23.56,2,no,northeast,8603.8234 +20,male,35.625,3,yes,northwest,37465.34375 +62,female,32.68,0,no,northwest,13844.7972 +43,female,25.27,1,yes,northeast,21771.3423 +23,female,28,0,no,southwest,13126.67745 +31,female,32.775,2,no,northwest,5327.40025 +41,female,21.755,1,no,northeast,13725.47184 +58,female,32.395,1,no,northeast,13019.16105 +48,female,36.575,0,no,northwest,8671.19125 +31,female,21.755,0,no,northwest,4134.08245 +19,female,27.93,3,no,northwest,18838.70366 +19,female,30.02,0,yes,northwest,33307.5508 +41,male,33.55,0,no,southeast,5699.8375 +40,male,29.355,1,no,northwest,6393.60345 +31,female,25.8,2,no,southwest,4934.705 +37,male,24.32,2,no,northwest,6198.7518 +46,male,40.375,2,no,northwest,8733.22925 +22,male,32.11,0,no,northwest,2055.3249 +51,male,32.3,1,no,northeast,9964.06 +18,female,27.28,3,yes,southeast,18223.4512 +35,male,17.86,1,no,northwest,5116.5004 +59,female,34.8,2,no,southwest,36910.60803 +36,male,33.4,2,yes,southwest,38415.474 +37,female,25.555,1,yes,northeast,20296.86345 +59,male,37.1,1,no,southwest,12347.172 +36,male,30.875,1,no,northwest,5373.36425 +39,male,34.1,2,no,southeast,23563.01618 +18,male,21.47,0,no,northeast,1702.4553 +52,female,33.3,2,no,southwest,10806.839 +27,female,31.255,1,no,northwest,3956.07145 +18,male,39.14,0,no,northeast,12890.05765 +40,male,25.08,0,no,southeast,5415.6612 +29,male,37.29,2,no,southeast,4058.1161 +46,female,34.6,1,yes,southwest,41661.602 +38,female,30.21,3,no,northwest,7537.1639 +30,female,21.945,1,no,northeast,4718.20355 +40,male,24.97,2,no,southeast,6593.5083 +50,male,25.3,0,no,southeast,8442.667 +20,female,24.42,0,yes,southeast,26125.67477 +41,male,23.94,1,no,northeast,6858.4796 +33,female,39.82,1,no,southeast,4795.6568 +38,male,16.815,2,no,northeast,6640.54485 +42,male,37.18,2,no,southeast,7162.0122 +56,male,34.43,0,no,southeast,10594.2257 +58,male,30.305,0,no,northeast,11938.25595 +52,male,34.485,3,yes,northwest,60021.39897 +20,female,21.8,0,yes,southwest,20167.33603 +54,female,24.605,3,no,northwest,12479.70895 +58,male,23.3,0,no,southwest,11345.519 +45,female,27.83,2,no,southeast,8515.7587 +26,male,31.065,0,no,northwest,2699.56835 +63,female,21.66,0,no,northeast,14449.8544 +58,female,28.215,0,no,northwest,12224.35085 +37,male,22.705,3,no,northeast,6985.50695 +25,female,42.13,1,no,southeast,3238.4357 +52,male,41.8,2,yes,southeast,47269.854 +64,male,36.96,2,yes,southeast,49577.6624 +22,female,21.28,3,no,northwest,4296.2712 +28,female,33.11,0,no,southeast,3171.6149 +18,male,33.33,0,no,southeast,1135.9407 +28,male,24.3,5,no,southwest,5615.369 +45,female,25.7,3,no,southwest,9101.798 +33,male,29.4,4,no,southwest,6059.173 +18,female,39.82,0,no,southeast,1633.9618 +32,male,33.63,1,yes,northeast,37607.5277 +24,male,29.83,0,yes,northeast,18648.4217 +19,male,19.8,0,no,southwest,1241.565 +20,male,27.3,0,yes,southwest,16232.847 +40,female,29.3,4,no,southwest,15828.82173 +34,female,27.72,0,no,southeast,4415.1588 +42,female,37.9,0,no,southwest,6474.013 +51,female,36.385,3,no,northwest,11436.73815 +54,female,27.645,1,no,northwest,11305.93455 +55,male,37.715,3,no,northwest,30063.58055 +52,female,23.18,0,no,northeast,10197.7722 +32,female,20.52,0,no,northeast,4544.2348 +28,male,37.1,1,no,southwest,3277.161 +41,female,28.05,1,no,southeast,6770.1925 +43,female,29.9,1,no,southwest,7337.748 +49,female,33.345,2,no,northeast,10370.91255 +64,male,23.76,0,yes,southeast,26926.5144 +55,female,30.5,0,no,southwest,10704.47 +24,male,31.065,0,yes,northeast,34254.05335 +20,female,33.3,0,no,southwest,1880.487 +45,male,27.5,3,no,southwest,8615.3 +26,male,33.915,1,no,northwest,3292.52985 +25,female,34.485,0,no,northwest,3021.80915 +43,male,25.52,5,no,southeast,14478.33015 +35,male,27.61,1,no,southeast,4747.0529 +26,male,27.06,0,yes,southeast,17043.3414 +57,male,23.7,0,no,southwest,10959.33 +22,female,30.4,0,no,northeast,2741.948 +32,female,29.735,0,no,northwest,4357.04365 +39,male,29.925,1,yes,northeast,22462.04375 +25,female,26.79,2,no,northwest,4189.1131 +48,female,33.33,0,no,southeast,8283.6807 +47,female,27.645,2,yes,northwest,24535.69855 +18,female,21.66,0,yes,northeast,14283.4594 +18,male,30.03,1,no,southeast,1720.3537 +61,male,36.3,1,yes,southwest,47403.88 +47,female,24.32,0,no,northeast,8534.6718 +28,female,17.29,0,no,northeast,3732.6251 +36,female,25.9,1,no,southwest,5472.449 +20,male,39.4,2,yes,southwest,38344.566 +44,male,34.32,1,no,southeast,7147.4728 +38,female,19.95,2,no,northeast,7133.9025 +19,male,34.9,0,yes,southwest,34828.654 +21,male,23.21,0,no,southeast,1515.3449 +46,male,25.745,3,no,northwest,9301.89355 +58,male,25.175,0,no,northeast,11931.12525 +20,male,22,1,no,southwest,1964.78 +18,male,26.125,0,no,northeast,1708.92575 +28,female,26.51,2,no,southeast,4340.4409 +33,male,27.455,2,no,northwest,5261.46945 +19,female,25.745,1,no,northwest,2710.82855 +45,male,30.36,0,yes,southeast,62592.87309 +62,male,30.875,3,yes,northwest,46718.16325 +25,female,20.8,1,no,southwest,3208.787 +43,male,27.8,0,yes,southwest,37829.7242 +42,male,24.605,2,yes,northeast,21259.37795 +24,female,27.72,0,no,southeast,2464.6188 +29,female,21.85,0,yes,northeast,16115.3045 +32,male,28.12,4,yes,northwest,21472.4788 +25,female,30.2,0,yes,southwest,33900.653 +41,male,32.2,2,no,southwest,6875.961 +42,male,26.315,1,no,northwest,6940.90985 +33,female,26.695,0,no,northwest,4571.41305 +34,male,42.9,1,no,southwest,4536.259 +19,female,34.7,2,yes,southwest,36397.576 +30,female,23.655,3,yes,northwest,18765.87545 +18,male,28.31,1,no,northeast,11272.33139 +19,female,20.6,0,no,southwest,1731.677 +18,male,53.13,0,no,southeast,1163.4627 +35,male,39.71,4,no,northeast,19496.71917 +39,female,26.315,2,no,northwest,7201.70085 +31,male,31.065,3,no,northwest,5425.02335 +62,male,26.695,0,yes,northeast,28101.33305 +62,male,38.83,0,no,southeast,12981.3457 +42,female,40.37,2,yes,southeast,43896.3763 +31,male,25.935,1,no,northwest,4239.89265 +61,male,33.535,0,no,northeast,13143.33665 +42,female,32.87,0,no,northeast,7050.0213 +51,male,30.03,1,no,southeast,9377.9047 +23,female,24.225,2,no,northeast,22395.74424 +52,male,38.6,2,no,southwest,10325.206 +57,female,25.74,2,no,southeast,12629.1656 +23,female,33.4,0,no,southwest,10795.93733 +52,female,44.7,3,no,southwest,11411.685 +50,male,30.97,3,no,northwest,10600.5483 +18,female,31.92,0,no,northeast,2205.9808 +18,female,36.85,0,no,southeast,1629.8335 +21,female,25.8,0,no,southwest,2007.945 +61,female,29.07,0,yes,northwest,29141.3603 +23,male,34.4,0,no,southwest,1826.843 +56,female,39.82,0,no,southeast,11090.7178 +27,male,42.13,0,yes,southeast,39611.7577 +19,male,24.6,1,no,southwest,1837.237 +52,female,30.78,1,no,northeast,10797.3362 +23,male,23.845,0,no,northeast,2395.17155 +56,male,40.3,0,no,southwest,10602.385 +30,male,35.3,0,yes,southwest,36837.467 +58,female,28.215,0,no,northwest,12224.35085 +37,male,22.705,3,no,northeast,6985.50695 +25,female,42.13,1,no,southeast,3238.4357 +52,male,41.8,2,yes,southeast,47269.854 +64,male,36.96,2,yes,southeast,49577.6624 +22,female,21.28,3,no,northwest,4296.2712 +28,female,33.11,0,no,southeast,3171.6149 +18,male,33.33,0,no,southeast,1135.9407 +28,male,24.3,5,no,southwest,5615.369 +45,female,25.7,3,no,southwest,9101.798 +33,male,29.4,4,no,southwest,6059.173 +18,female,39.82,0,no,southeast,1633.9618 +32,male,33.63,1,yes,northeast,37607.5277 +19,female,23.4,2,no,southwest,2913.569 +57,female,20.1,1,no,southwest,12032.326 +62,female,39.16,0,no,southeast,13470.8044 +41,male,34.21,1,no,southeast,6289.7549 +26,male,46.53,1,no,southeast,2927.0647 +39,female,32.5,1,no,southwest,6238.298 +46,male,25.8,5,no,southwest,10096.97 +45,female,35.3,0,no,southwest,7348.142 +32,male,37.18,2,no,southeast,4673.3922 +59,female,27.5,0,no,southwest,12233.828 +44,male,29.735,2,no,northeast,32108.66282 +39,female,24.225,5,no,northwest,8965.79575 +18,male,26.18,2,no,southeast,2304.0022 +53,male,29.48,0,no,southeast,9487.6442 +18,male,23.21,0,no,southeast,1121.8739 +26,female,34.2,2,no,southwest,3987.926 +54,female,35.815,3,no,northwest,12495.29085 +21,female,32.68,2,no,northwest,26018.95052 +51,male,37,0,no,southwest,8798.593 +22,female,31.02,3,yes,southeast,35595.5898 +47,male,36.08,1,yes,southeast,42211.1382 +18,male,23.32,1,no,southeast,1711.0268 +47,female,45.32,1,no,southeast,8569.8618 +21,female,34.6,0,no,southwest,2020.177 +19,male,26.03,1,yes,northwest,16450.8947 +23,male,18.715,0,no,northwest,21595.38229 +54,male,31.6,0,no,southwest,9850.432 \ No newline at end of file diff --git a/lec3.ipynb b/lec3.ipynb index e1fc869..96705d1 100644 --- a/lec3.ipynb +++ b/lec3.ipynb @@ -13,12 +13,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Загрузка набора данных Titanic" + "#### Загрузка набора данных World Population" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -274,7 +274,7 @@ "[235 rows x 12 columns]" ] }, - "execution_count": 35, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -317,7 +317,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -344,7 +344,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -369,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -379,7 +379,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -390,7 +390,7 @@ " array([229, 5, 1]))" ] }, - "execution_count": 39, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -404,7 +404,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -567,7 +567,7 @@ "20 510890 (0.0, 5458956.667]" ] }, - "execution_count": 40, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -580,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -743,7 +743,7 @@ "20 510890 Small" ] }, - "execution_count": 41, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -761,7 +761,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -771,7 +771,7 @@ " array([229, 1, 4, 1]))" ] }, - "execution_count": 42, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -791,7 +791,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -954,7 +954,7 @@ "20 510890 (0.0, 4000000.0]" ] }, - "execution_count": 43, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -965,7 +965,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -1128,7 +1128,7 @@ "20 510890 Small" ] }, - "execution_count": 44, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1149,7 +1149,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1159,7 +1159,7 @@ " array([52, 77, 56, 44, 6]))" ] }, - "execution_count": 45, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -1177,7 +1177,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1340,7 +1340,7 @@ "20 510890 (500000.0, 3000000.0]" ] }, - "execution_count": 46, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1351,7 +1351,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1514,7 +1514,7 @@ "20 510890 Big" ] }, - "execution_count": 47, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1535,7 +1535,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -1698,7 +1698,7 @@ "20 510890 3" ] }, - "execution_count": 48, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1709,7 +1709,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -1872,7 +1872,7 @@ "20 510890 Big" ] }, - "execution_count": 49, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1896,7 +1896,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -1929,20 +1929,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Загрузка данных\n", - "\n", - "За основу был взят набор данных \"Ecommerce Orders Data Set\" из Kaggle\n", - "\n", - "Используется только 100 первых заказов и связанные с ними объекты\n", - "\n", - "https://www.kaggle.com/datasets/sangamsharmait/ecommerce-orders-data-analysis" + "#### Загрузка данных" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 17, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\frenk\\OneDrive\\Рабочий стол\\MII_Salin_Oleg_PIbd-33\\.venv\\Lib\\site-packages\\featuretools\\entityset\\entityset.py:1379: SyntaxWarning: invalid escape sequence '\\l'\n", + " columns_string = \"\\l\".join(column_typing_info) # noqa: W605\n", + "c:\\Users\\frenk\\OneDrive\\Рабочий стол\\MII_Salin_Oleg_PIbd-33\\.venv\\Lib\\site-packages\\featuretools\\entityset\\entityset.py:1381: SyntaxWarning: invalid escape sequence '\\l'\n", + " label = \"{%s (%d row%s)|%s\\l}\" % ( # noqa: W605\n" + ] + }, { "data": { "text/plain": [ @@ -1997,7 +2001,7 @@ " [234 rows x 3 columns])" ] }, - "execution_count": 51, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -2046,7 +2050,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -2071,7 +2075,7 @@ " No relationships" ] }, - "execution_count": 52, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -2123,7 +2127,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -2138,7 +2142,7 @@ " countries.Country -> capitals.Country" ] }, - "execution_count": 53, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -2162,7 +2166,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2353,7 +2357,7 @@ "[235 rows x 7 columns]" ] }, - "execution_count": 54, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -2379,7 +2383,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -2394,7 +2398,7 @@ " ]" ] }, - "execution_count": 55, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -2419,7 +2423,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -2428,9 +2432,19 @@ "" ] }, - "execution_count": 56, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ZWWl5+maMWPGqHv37srJyZEkTZgwQYMHD9acOXN0++23a9myZdq6dasWLlzYsp8EAAC0Sl6HkZEjR+rw4cOaMmWKysvL1a9fP61bt84zSLWsrEwBAf+44DJo0CC99dZbevrppzVp0iRde+21ys/P5x0jAABAEnPTADDM5XJp7dq1Gj58OGNGAD/T3N9vr8aMAAAAtDTCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAor18Hb0LdS2KbOxUxgNbD5XKpqqpKTqeTN7ACfqbud/tcL3tvFWHk+PHjkqTo6JaZshwAAPjO8ePHFRER0eT6VjE3TW1trX744Qe1a9dONpvNdDkAWpDT6VR0dLT+/ve/M/cU4Gcsy9Lx48fVrVu3epPo/lKrCCMA/BcTYQJgACsAADCKMAIAAIwijAAwyuFwaOrUqXI4HKZLAWAIY0YAAIBRXBkBAABGEUYAAIBRhBEAAGAUYQSA15KTk/XYY49dMvsB0LoRRoBW5v7775fNZpPNZlNwcLBiY2P17LPP6tSpU6ZLa9KGDRtks9l09OjReu0rV67U9OnTW/RYr732mpKSktShQwd16NBBKSkp2rJlS70+lmVpypQp6tq1q0JDQ5WSkqLdu3d71u/fv18PPPCAevbsqdDQUF1zzTWaOnWqampq6u3nq6++UlJSkkJCQhQdHa1Zs2a16GcB2grCCNAK3XbbbTp48KB2796tJ554Qs8884xmz55tuiyvdezYUe3atWvRfW7YsEH33nuvPv74YxUXFys6OlppaWk6cOCAp8+sWbP00ksvKS8vT59//rkuu+wypaen6+eff5Yk7dy5U7W1tfrP//xP/fWvf9WLL76ovLw8TZo0ybMPp9OptLQ0XXXVVSopKdHs2bP1zDPPaOHChS36eYA2wQLQqowdO9a6884767WlpqZaN910k/XTTz9Zo0ePttq3b2+FhoZat912m/XNN994+i1evNiKiIiwVq1aZcXGxloOh8NKS0uzysrKzrr/CRMmWIMHD/YsDx482JowYYJnecmSJVb//v2tyy+/3IqMjLTuvfdeq6KiwrIsy9q3b58lqd6/sWPHNrqf5ta/bt06q3fv3tZll11mpaenWz/88EOT/3udOnXKateunfXGG29YlmVZtbW1VlRUlDV79mxPn6NHj1oOh8NaunRpk/uZNWuW1bNnT8/yq6++anXo0MGqrq72tD355JNWr169mtwHgMZxZQTwA6GhoaqpqdH999+vrVu3avXq1SouLpZlWRo+fLhcLpenb1VVlZ5//nktWbJEn376qY4eParf//73F3R8l8ul6dOn68svv1R+fr7279+v+++/X9Lp2bbfffddSdKuXbt08OBBzZ8/v9H9NLf+3Nxc/dd//Zc2bdqksrIyTZw4scnaqqqq5HK51LFjR0nSvn37VF5erpSUFE+fiIgIJSQkqLi4uMn9HDt2zLMPSSouLtYtt9yi4OBgT1t6erp27dql//u//zvL/1oAfinQdAEAzp9lWSosLNSHH36oYcOGKT8/X59++qkGDRokSXrzzTcVHR2t/Px83X333ZJOB4dXXnlFCQkJkqQ33nhD119/vbZs2aKBAweeVx3//M//7Pn76quv1ksvvaRf//rXOnHihC6//HLPj3iXLl3Uvn37Rvexe/durV69uln15+Xl6ZprrpEkPfroo3r22WebrO3JJ59Ut27dPOGjvLxckhQZGVmvX2RkpGfdL+3Zs0cvv/yycnNzPW3l5eXq2bNng33UrevQoUOTNQGojysjQCu0Zs0aXX755QoJCdGwYcM0cuRI3X///QoMDPSEDEm64oor1KtXL3399deetsDAQP3617/2LPfu3Vvt27ev18dbJSUlysjIUI8ePdSuXTsNHjxYklRWVtbsfXz99dfNqj8sLMwTRCSpa9euOnToUKP7nDlzppYtW6ZVq1YpJCTE248lSTpw4IBuu+023X333Ro/fvx57QPA2RFGgFZoyJAhKi0t1e7du3Xy5Em98cYbstlsLbLvgIAAWb+YJeLM2yS/VFlZqfT0dIWHh+vNN9/U//7v/2rVqlWS1ODpk5YQFBRUb9lmszWoV5Jyc3M1c+ZMrV+/XjfeeKOnPSoqSpJUUVFRr39FRYVnXZ0ffvhBQ4YM0aBBgxoMTI2Kimp0H2ceA0DzEEaAVuiyyy5TbGysevToocDA03dbr7/+ep06dUqff/65p9+PP/6oXbt26YYbbvC0nTp1Slu3bvUs79q1S0ePHtX1118vSercubMOHjxY73ilpaVN1rJz5079+OOPmjlzppKSktS7d+8GVyrqxlW43e4m99Pc+ptj1qxZmj59utatW6cBAwbUW9ezZ09FRUWpsLDQ0+Z0OvX5558rMTHR03bgwAElJyerf//+Wrx4sQIC6n9dJiYmatOmTfWCWkFBgXr16sUtGsBLhBHAT1x77bW68847NX78eH3yySf68ssv9U//9E/q3r277rzzTk+/oKAg/eu//qs+//xzlZSU6P7779dNN93kGS9y6623auvWrVqyZIl2796tqVOnaseOHU0et0ePHgoODtbLL7+svXv3avXq1Q3eHXLVVVfJZrNpzZo1Onz4sE6cOHHe9Z/LCy+8oMmTJ2vRokWKiYlReXm5ysvLPce02Wx67LHH9Nxzz2n16tXavn27xowZo27duikzM1PSP4JIjx49lJubq8OHD3v2U2fUqFEKDg7WAw88oL/+9a9avny55s+fr6ysrGbXCuD/MfosDwCvNfbobZ26R2MjIiKs0NBQKz09vdFHY999913r6quvthwOh5WSkmJ999139fYzZcoUKzIy0oqIiLAef/xx69FHHz3ro71vvfWWFRMTYzkcDisxMdFavXq1Jcn64osvPH2effZZKyoqyrLZbOd8tPdc9Z9p1apV1plfZVdddVWDR4klWVOnTvX0qa2ttSZPnmxFRkZaDofDGjp0qLVr1656x2lsH7/8yvzyyy+tm2++2XI4HFb37t2tmTNnNvr/C4Czs1lWIzdbAfil119/XY899liDN6ECgEncpgEAAEYRRgAAgFHcpgEAAEZxZQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAY9f8DA3dqP7P3BxYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -2441,12 +2455,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Отсечение данных для признака Возраст, значение которых больше 65 лет" + "Отсечение данных для признака Население, значение которых больше 50000000\n" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -2694,7 +2708,7 @@ "29 Colombia 50882891 50000000" ] }, - "execution_count": 57, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -2702,7 +2716,7 @@ "source": [ "countries_norm = countries.copy()\n", "\n", - "countries_norm[\"PopulationClip\"] = countries_norm[\"Population2020\"].clip(0, 50000000);\n", + "countries_norm[\"PopulationClip\"] = countries_norm[\"Population2020\"].clip(0, 50000000)\n", "\n", "countries_norm[countries_norm[\"Population2020\"] > 50000000][\n", " [\"Country\", \"Population2020\", \"PopulationClip\"]\n", @@ -2718,7 +2732,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -2973,7 +2987,7 @@ "29 Colombia 50882891 50882891" ] }, - "execution_count": 58, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -3003,7 +3017,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -3181,7 +3195,7 @@ "[235 rows x 6 columns]" ] }, - "execution_count": 59, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -3230,7 +3244,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -3395,7 +3409,7 @@ "[235 rows x 5 columns]" ] }, - "execution_count": 60, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } diff --git a/lec4.ipynb b/lec4.ipynb new file mode 100644 index 0000000..29223ab --- /dev/null +++ b/lec4.ipynb @@ -0,0 +1,2407 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Загрузка набора данных" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "from sklearn import set_config\n", + "\n", + "set_config(transform_output=\"pandas\")\n", + "\n", + "random_state=9\n", + "\n", + "df = pd.read_csv(\"data/Medical_insurance.csv\", index_col=False)\n", + "\n", + "df[\"smoker\"] = df[\"smoker\"].apply(lambda x: 1 if x == \"yes\" else 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n", + "\n", + "Целевой признак -- Survived" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'X_train'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agesexbmichildrensmokerregioncharges
67129female31.16000northeast3943.59540
80818male30.14000southeast1131.50660
79527male28.50001northwest18310.74200
57622male26.84000southeast1664.99960
123254female24.60530northwest12479.70895
........................
10520male28.02511northwest17560.37975
46142male30.00001southwest22144.03200
265049female33.34520northeast10370.91255
167459female36.76511northeast47896.79135
268943male27.80001southwest37829.72420
\n", + "

2217 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " age sex bmi children smoker region charges\n", + "671 29 female 31.160 0 0 northeast 3943.59540\n", + "808 18 male 30.140 0 0 southeast 1131.50660\n", + "795 27 male 28.500 0 1 northwest 18310.74200\n", + "576 22 male 26.840 0 0 southeast 1664.99960\n", + "1232 54 female 24.605 3 0 northwest 12479.70895\n", + "... ... ... ... ... ... ... ...\n", + "105 20 male 28.025 1 1 northwest 17560.37975\n", + "461 42 male 30.000 0 1 southwest 22144.03200\n", + "2650 49 female 33.345 2 0 northeast 10370.91255\n", + "1674 59 female 36.765 1 1 northeast 47896.79135\n", + "2689 43 male 27.800 0 1 southwest 37829.72420\n", + "\n", + "[2217 rows x 7 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'y_train'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smoker
6710
8080
7951
5760
12320
......
1051
4611
26500
16741
26891
\n", + "

2217 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " smoker\n", + "671 0\n", + "808 0\n", + "795 1\n", + "576 0\n", + "1232 0\n", + "... ...\n", + "105 1\n", + "461 1\n", + "2650 0\n", + "1674 1\n", + "2689 1\n", + "\n", + "[2217 rows x 1 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'X_test'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agesexbmichildrensmokerregioncharges
12447female33.91530northwest10115.00885
77835male34.32030southeast5934.37980
37242female33.15510northeast7639.41745
196932female23.65010southeast17626.23951
252244female25.00010southwest7623.51800
........................
90863male39.80030southwest15170.06900
120351male32.30010northeast9964.06000
4555male37.30000southwest20630.28351
266918male30.03010southeast1720.35370
123052male34.48531northwest60021.39897
\n", + "

555 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " age sex bmi children smoker region charges\n", + "124 47 female 33.915 3 0 northwest 10115.00885\n", + "778 35 male 34.320 3 0 southeast 5934.37980\n", + "372 42 female 33.155 1 0 northeast 7639.41745\n", + "1969 32 female 23.650 1 0 southeast 17626.23951\n", + "2522 44 female 25.000 1 0 southwest 7623.51800\n", + "... ... ... ... ... ... ... ...\n", + "908 63 male 39.800 3 0 southwest 15170.06900\n", + "1203 51 male 32.300 1 0 northeast 9964.06000\n", + "45 55 male 37.300 0 0 southwest 20630.28351\n", + "2669 18 male 30.030 1 0 southeast 1720.35370\n", + "1230 52 male 34.485 3 1 northwest 60021.39897\n", + "\n", + "[555 rows x 7 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'y_test'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smoker
1240
7780
3720
19690
25220
......
9080
12030
450
26690
12301
\n", + "

555 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " smoker\n", + "124 0\n", + "778 0\n", + "372 0\n", + "1969 0\n", + "2522 0\n", + "... ...\n", + "908 0\n", + "1203 0\n", + "45 0\n", + "2669 0\n", + "1230 1\n", + "\n", + "[555 rows x 1 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from utils import split_stratified_into_train_val_test\n", + "X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n", + " df, stratify_colname=\"smoker\", target_colname=\"smoker\",frac_train=0.80, frac_val=0, frac_test=0.20, random_state=random_state\n", + ")\n", + "\n", + "display(\"X_train\", X_train)\n", + "display(\"y_train\", y_train)\n", + "\n", + "display(\"X_test\", X_test)\n", + "display(\"y_test\", y_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Формирование конвейера для классификации данных\n", + "\n", + "preprocessing_num -- конвейер для обработки числовых данных: заполнение пропущенных значений и стандартизация\n", + "\n", + "preprocessing_cat -- конвейер для обработки категориальных данных: заполнение пропущенных данных и унитарное кодирование\n", + "\n", + "features_preprocessing -- трансформер для предобработки признаков\n", + "\n", + "features_engineering -- трансформер для конструирования признаков\n", + "\n", + "drop_columns -- трансформер для удаления колонок\n", + "\n", + "features_postprocessing -- трансформер для унитарного кодирования новых признаков\n", + "\n", + "pipeline_end -- основной конвейер предобработки данных и конструирования признаков\n", + "\n", + "Конвейер выполняется последовательно.\n", + "\n", + "Трансформер выполняет параллельно для указанного набора колонок.\n", + "\n", + "Документация: \n", + "\n", + "https://scikit-learn.org/1.5/api/sklearn.pipeline.html\n", + "\n", + "https://scikit-learn.org/1.5/modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.discriminant_analysis import StandardScaler\n", + "from sklearn.impute import SimpleImputer\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.preprocessing import OneHotEncoder\n", + "\n", + "columns_to_drop = [\"smoker\"]\n", + "num_columns = [\n", + " column\n", + " for column in df.columns\n", + " if df[column].dtype != \"object\"\n", + "]\n", + "cat_columns = [\n", + " column\n", + " for column in df.columns\n", + " if df[column].dtype == \"object\"\n", + "]\n", + "\n", + "num_imputer = SimpleImputer(strategy=\"median\")\n", + "num_scaler = StandardScaler()\n", + "preprocessing_num = Pipeline(\n", + " [\n", + " (\"imputer\", num_imputer),\n", + " (\"scaler\", num_scaler),\n", + " ]\n", + ")\n", + "\n", + "cat_imputer = SimpleImputer(strategy=\"constant\", fill_value=\"unknown\")\n", + "cat_encoder = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False, drop=\"first\")\n", + "preprocessing_cat = Pipeline(\n", + " [\n", + " (\"imputer\", cat_imputer),\n", + " (\"encoder\", cat_encoder),\n", + " ]\n", + ")\n", + "\n", + "features_preprocessing = ColumnTransformer(\n", + " verbose_feature_names_out=False,\n", + " transformers=[\n", + " (\"prepocessing_num\", preprocessing_num, num_columns),\n", + " (\"prepocessing_cat\", preprocessing_cat, cat_columns),\n", + " ],\n", + " remainder=\"passthrough\"\n", + ")\n", + "\n", + "drop_columns = ColumnTransformer(\n", + " verbose_feature_names_out=False,\n", + " transformers=[\n", + " (\"drop_columns\", \"drop\", columns_to_drop),\n", + " ],\n", + " remainder=\"passthrough\",\n", + ")\n", + "\n", + "pipeline_end = Pipeline(\n", + " [\n", + " (\"features_preprocessing\", features_preprocessing),\n", + " (\"drop_columns\", drop_columns),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Демонстрация работы конвейера для предобработки данных при классификации" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrenchargessex_maleregion_northwestregion_southeastregion_southwest
671-0.7307220.085028-0.907368-0.7692410.00.00.00.0
808-1.513302-0.081153-0.907368-0.9998241.00.01.00.0
795-0.873009-0.348348-0.9073680.4088271.01.00.00.0
576-1.228727-0.618800-0.907368-0.9560791.00.01.00.0
12321.047868-0.9829341.555858-0.0693020.01.00.00.0
...........................
105-1.371015-0.425736-0.0862930.3472991.01.00.00.0
4610.194145-0.103963-0.9073680.7231471.00.00.01.0
26500.6921500.4410160.734783-0.2422180.00.00.00.0
16741.4035860.998214-0.0862932.8348040.00.00.00.0
26890.265288-0.462394-0.9073682.0093321.00.00.01.0
\n", + "

2217 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " age bmi children charges sex_male region_northwest \\\n", + "671 -0.730722 0.085028 -0.907368 -0.769241 0.0 0.0 \n", + "808 -1.513302 -0.081153 -0.907368 -0.999824 1.0 0.0 \n", + "795 -0.873009 -0.348348 -0.907368 0.408827 1.0 1.0 \n", + "576 -1.228727 -0.618800 -0.907368 -0.956079 1.0 0.0 \n", + "1232 1.047868 -0.982934 1.555858 -0.069302 0.0 1.0 \n", + "... ... ... ... ... ... ... \n", + "105 -1.371015 -0.425736 -0.086293 0.347299 1.0 1.0 \n", + "461 0.194145 -0.103963 -0.907368 0.723147 1.0 0.0 \n", + "2650 0.692150 0.441016 0.734783 -0.242218 0.0 0.0 \n", + "1674 1.403586 0.998214 -0.086293 2.834804 0.0 0.0 \n", + "2689 0.265288 -0.462394 -0.907368 2.009332 1.0 0.0 \n", + "\n", + " region_southeast region_southwest \n", + "671 0.0 0.0 \n", + "808 1.0 0.0 \n", + "795 0.0 0.0 \n", + "576 1.0 0.0 \n", + "1232 0.0 0.0 \n", + "... ... ... \n", + "105 0.0 0.0 \n", + "461 0.0 1.0 \n", + "2650 0.0 0.0 \n", + "1674 0.0 0.0 \n", + "2689 0.0 1.0 \n", + "\n", + "[2217 rows x 8 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preprocessing_result = pipeline_end.fit_transform(X_train)\n", + "preprocessed_df = pd.DataFrame(\n", + " preprocessing_result,\n", + " columns=pipeline_end.get_feature_names_out(),\n", + ")\n", + "\n", + "preprocessed_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Формирование набора моделей для классификации\n", + "\n", + "logistic -- логистическая регрессия\n", + "\n", + "ridge -- гребневая регрессия\n", + "\n", + "decision_tree -- дерево решений\n", + "\n", + "knn -- k-ближайших соседей\n", + "\n", + "naive_bayes -- наивный Байесовский классификатор\n", + "\n", + "gradient_boosting -- метод градиентного бустинга (набор деревьев решений)\n", + "\n", + "random_forest -- метод случайного леса (набор деревьев решений)\n", + "\n", + "mlp -- многослойный персептрон (нейронная сеть)\n", + "\n", + "Документация: https://scikit-learn.org/1.5/supervised_learning.html" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import ensemble, linear_model, naive_bayes, neighbors, neural_network, tree\n", + "\n", + "class_models = {\n", + " \"logistic\": {\"model\": linear_model.LogisticRegression()},\n", + " # \"ridge\": {\"model\": linear_model.RidgeClassifierCV(cv=5, class_weight=\"balanced\")},\n", + " \"ridge\": {\"model\": linear_model.LogisticRegression(penalty=\"l2\", class_weight=\"balanced\")},\n", + " \"decision_tree\": {\n", + " \"model\": tree.DecisionTreeClassifier(max_depth=7, random_state=random_state)\n", + " },\n", + " \"knn\": {\"model\": neighbors.KNeighborsClassifier(n_neighbors=7)},\n", + " \"naive_bayes\": {\"model\": naive_bayes.GaussianNB()},\n", + " \"gradient_boosting\": {\n", + " \"model\": ensemble.GradientBoostingClassifier(n_estimators=210)\n", + " },\n", + " \"random_forest\": {\n", + " \"model\": ensemble.RandomForestClassifier(\n", + " max_depth=11, class_weight=\"balanced\", random_state=random_state\n", + " )\n", + " },\n", + " \"mlp\": {\n", + " \"model\": neural_network.MLPClassifier(\n", + " hidden_layer_sizes=(7,),\n", + " max_iter=500,\n", + " early_stopping=True,\n", + " random_state=random_state,\n", + " )\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Обучение моделей на обучающем наборе данных и оценка на тестовом" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: logistic\n", + "Model: ridge\n", + "Model: decision_tree\n", + "Model: knn\n", + "Model: naive_bayes\n", + "Model: gradient_boosting\n", + "Model: random_forest\n", + "Model: mlp\n" + ] + } + ], + "source": [ + "import numpy as np # type: ignore\n", + "from sklearn import metrics\n", + "\n", + "for model_name in class_models.keys():\n", + " print(f\"Model: {model_name}\")\n", + " model = class_models[model_name][\"model\"]\n", + "\n", + " model_pipeline = Pipeline([(\"pipeline\", pipeline_end), (\"model\", model)])\n", + " model_pipeline = model_pipeline.fit(X_train, y_train.values.ravel())\n", + "\n", + " y_train_predict = model_pipeline.predict(X_train)\n", + " y_test_probs = model_pipeline.predict_proba(X_test)[:, 1]\n", + " y_test_predict = np.where(y_test_probs > 0.5, 1, 0)\n", + "\n", + " class_models[model_name][\"pipeline\"] = model_pipeline\n", + " class_models[model_name][\"probs\"] = y_test_probs\n", + " class_models[model_name][\"preds\"] = y_test_predict\n", + "\n", + " class_models[model_name][\"Precision_train\"] = metrics.precision_score(\n", + " y_train, y_train_predict\n", + " )\n", + " class_models[model_name][\"Precision_test\"] = metrics.precision_score(\n", + " y_test, y_test_predict\n", + " )\n", + " class_models[model_name][\"Recall_train\"] = metrics.recall_score(\n", + " y_train, y_train_predict\n", + " )\n", + " class_models[model_name][\"Recall_test\"] = metrics.recall_score(\n", + " y_test, y_test_predict\n", + " )\n", + " class_models[model_name][\"Accuracy_train\"] = metrics.accuracy_score(\n", + " y_train, y_train_predict\n", + " )\n", + " class_models[model_name][\"Accuracy_test\"] = metrics.accuracy_score(\n", + " y_test, y_test_predict\n", + " )\n", + " class_models[model_name][\"ROC_AUC_test\"] = metrics.roc_auc_score(\n", + " y_test, y_test_probs\n", + " )\n", + " class_models[model_name][\"F1_train\"] = metrics.f1_score(y_train, y_train_predict)\n", + " class_models[model_name][\"F1_test\"] = metrics.f1_score(y_test, y_test_predict)\n", + " class_models[model_name][\"MCC_test\"] = metrics.matthews_corrcoef(\n", + " y_test, y_test_predict\n", + " )\n", + " class_models[model_name][\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(\n", + " y_test, y_test_predict\n", + " )\n", + " class_models[model_name][\"Confusion_matrix\"] = metrics.confusion_matrix(\n", + " y_test, y_test_predict\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Сводная таблица оценок качества для использованных моделей классификации\n", + "\n", + "Документация: https://scikit-learn.org/1.5/modules/model_evaluation.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Матрица неточностей" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import ConfusionMatrixDisplay\n", + "import matplotlib.pyplot as plt\n", + "\n", + "_, ax = plt.subplots(int(len(class_models) / 2), 2, figsize=(12, 10), sharex=False, sharey=False)\n", + "for index, key in enumerate(class_models.keys()):\n", + " c_matrix = class_models[key][\"Confusion_matrix\"]\n", + " disp = ConfusionMatrixDisplay(\n", + " confusion_matrix=c_matrix, display_labels=[\"non smoker\", \"smoker\"]\n", + " ).plot(ax=ax.flat[index])\n", + " disp.ax_.set_title(key)\n", + "\n", + "plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Точность, полнота, верность (аккуратность), F-мера" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 Precision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_test
gradient_boosting1.0000000.9826091.0000001.0000001.0000000.9963961.0000000.991228
decision_tree0.9760350.9565220.9933480.9734510.9936850.9855860.9846150.964912
random_forest0.9955850.9487181.0000000.9823010.9990980.9855860.9977880.965217
ridge0.8461540.8370371.0000001.0000000.9630130.9603600.9166670.911290
knn0.9038460.8706900.9379160.8938050.9670730.9513510.9205660.882096
logistic0.8673680.8495580.9135250.8495580.9539920.9387390.8898490.849558
naive_bayes0.7940450.8247420.7095340.7079650.9034730.9099100.7494150.761905
mlp0.9101120.9076920.5388030.5221240.8953540.8918920.6768800.662921
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n", + " [\n", + " \"Precision_train\",\n", + " \"Precision_test\",\n", + " \"Recall_train\",\n", + " \"Recall_test\",\n", + " \"Accuracy_train\",\n", + " \"Accuracy_test\",\n", + " \"F1_train\",\n", + " \"F1_test\",\n", + " ]\n", + "]\n", + "class_metrics.sort_values(\n", + " by=\"Accuracy_test\", ascending=False\n", + ").style.background_gradient(\n", + " cmap=\"plasma\",\n", + " low=0.3,\n", + " high=1,\n", + " subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n", + ").background_gradient(\n", + " cmap=\"viridis\",\n", + " low=1,\n", + " high=0.3,\n", + " subset=[\n", + " \"Precision_train\",\n", + " \"Precision_test\",\n", + " \"Recall_train\",\n", + " \"Recall_test\",\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ROC-кривая, каппа Коэна, коэффициент корреляции Мэтьюса" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 Accuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_test
random_forest0.9855860.9652170.9990390.9561300.956360
gradient_boosting0.9963960.9912280.9981180.9889610.989021
decision_tree0.9855860.9649120.9957450.9558430.955901
knn0.9513510.8820960.9900490.8514560.851572
ridge0.9603600.9112900.9820010.8860260.891838
logistic0.9387390.8495580.9815200.8110960.811096
naive_bayes0.9099100.7619050.9748130.7067460.709879
mlp0.8918920.6629210.9680860.6040430.636838
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n", + " [\n", + " \"Accuracy_test\",\n", + " \"F1_test\",\n", + " \"ROC_AUC_test\",\n", + " \"Cohen_kappa_test\",\n", + " \"MCC_test\",\n", + " ]\n", + "]\n", + "class_metrics.sort_values(by=\"ROC_AUC_test\", ascending=False).style.background_gradient(\n", + " cmap=\"plasma\",\n", + " low=0.3,\n", + " high=1,\n", + " subset=[\n", + " \"ROC_AUC_test\",\n", + " \"MCC_test\",\n", + " \"Cohen_kappa_test\",\n", + " ],\n", + ").background_gradient(\n", + " cmap=\"viridis\",\n", + " low=1,\n", + " high=0.3,\n", + " subset=[\n", + " \"Accuracy_test\",\n", + " \"F1_test\",\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'gradient_boosting'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "best_model = str(class_metrics.sort_values(by=\"MCC_test\", ascending=False).iloc[0].name)\n", + "\n", + "display(best_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Вывод данных с ошибкой предсказания для оценки" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Error items count: 2'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agePredictedsexbmichildrensmokerregioncharges
583321female23.6510southeast17626.23951
1969321female23.6510southeast17626.23951
\n", + "
" + ], + "text/plain": [ + " age Predicted sex bmi children smoker region charges\n", + "583 32 1 female 23.65 1 0 southeast 17626.23951\n", + "1969 32 1 female 23.65 1 0 southeast 17626.23951" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preprocessing_result = pipeline_end.transform(X_test)\n", + "preprocessed_df = pd.DataFrame(\n", + " preprocessing_result,\n", + " columns=pipeline_end.get_feature_names_out(),\n", + ")\n", + "\n", + "y_pred = class_models[best_model][\"preds\"]\n", + "\n", + "error_index = y_test[y_test[\"smoker\"] != y_pred].index.tolist()\n", + "display(f\"Error items count: {len(error_index)}\")\n", + "\n", + "error_predicted = pd.Series(y_pred, index=y_test.index).loc[error_index]\n", + "error_df = X_test.loc[error_index].copy()\n", + "error_df.insert(loc=1, column=\"Predicted\", value=error_predicted)\n", + "error_df.sort_index()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Пример использования обученной модели (конвейера) для предсказания" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "age 32\n", + "sex female\n", + "bmi 23.65\n", + "children 1\n", + "smoker 0\n", + "region southeast\n", + "charges 17626.23951\n", + "Name: 1969, dtype: object\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agesexbmichildrensmokerregioncharges
196932female23.6510southeast17626.23951
\n", + "
" + ], + "text/plain": [ + " age sex bmi children smoker region charges\n", + "1969 32 female 23.65 1 0 southeast 17626.23951" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrenchargessex_maleregion_northwestregion_southeastregion_southwest
1969-0.517291-1.138526-0.0862930.35270.00.01.00.0
\n", + "
" + ], + "text/plain": [ + " age bmi children charges sex_male region_northwest \\\n", + "1969 -0.517291 -1.138526 -0.086293 0.3527 0.0 0.0 \n", + "\n", + " region_southeast region_southwest \n", + "1969 1.0 0.0 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'predicted: 1 (proba: [0.01087081 0.98912919])'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'real: 0'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model = class_models[best_model][\"pipeline\"]\n", + "\n", + "example_id = 1969\n", + "print(X_test.loc[example_id, :])\n", + "test = pd.DataFrame(X_test.loc[example_id, :]).T\n", + "test_preprocessed = pd.DataFrame(preprocessed_df.loc[example_id, :]).T\n", + "display(test)\n", + "display(test_preprocessed)\n", + "result_proba = model.predict_proba(test)[0]\n", + "result = model.predict(test)[0]\n", + "real = int(y_test.loc[example_id].values[0])\n", + "display(f\"predicted: {result} (proba: {result_proba})\")\n", + "display(f\"real: {real}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Подбор гиперпараметров методом поиска по сетке\n", + "\n", + "https://www.kaggle.com/code/sociopath00/random-forest-using-gridsearchcv\n", + "\n", + "https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\frenk\\OneDrive\\Рабочий стол\\MII_Salin_Oleg_PIbd-33\\.venv\\Lib\\site-packages\\numpy\\ma\\core.py:2881: RuntimeWarning: invalid value encountered in cast\n", + " _data = np.array(data, dtype=dtype, copy=copy,\n" + ] + }, + { + "data": { + "text/plain": [ + "{'model__criterion': 'entropy',\n", + " 'model__max_depth': 10,\n", + " 'model__max_features': 'log2',\n", + " 'model__n_estimators': 250}" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "optimized_model_type = \"random_forest\"\n", + "\n", + "random_forest_model = class_models[optimized_model_type][\"pipeline\"]\n", + "\n", + "param_grid = {\n", + " \"model__n_estimators\": [10, 20, 30, 40, 50, 100, 150, 200, 250, 500],\n", + " \"model__max_features\": [\"sqrt\", \"log2\", 2],\n", + " \"model__max_depth\": [2, 3, 4, 5, 6, 7, 8, 9 ,10],\n", + " \"model__criterion\": [\"gini\", \"entropy\", \"log_loss\"],\n", + "}\n", + "\n", + "gs_optomizer = GridSearchCV(\n", + " estimator=random_forest_model, param_grid=param_grid, n_jobs=-1\n", + ")\n", + "gs_optomizer.fit(X_train, y_train.values.ravel())\n", + "gs_optomizer.best_params_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Обучение модели с новыми гиперпараметрами" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "optimized_model = ensemble.RandomForestClassifier(\n", + " random_state=random_state,\n", + " criterion=\"gini\",\n", + " max_depth=7,\n", + " max_features=\"sqrt\",\n", + " n_estimators=30,\n", + ")\n", + "\n", + "result = {}\n", + "\n", + "result[\"pipeline\"] = Pipeline([(\"pipeline\", pipeline_end), (\"model\", optimized_model)]).fit(X_train, y_train.values.ravel())\n", + "result[\"train_preds\"] = result[\"pipeline\"].predict(X_train)\n", + "result[\"probs\"] = result[\"pipeline\"].predict_proba(X_test)[:, 1]\n", + "result[\"preds\"] = np.where(result[\"probs\"] > 0.5, 1, 0)\n", + "\n", + "result[\"Precision_train\"] = metrics.precision_score(y_train, result[\"train_preds\"])\n", + "result[\"Precision_test\"] = metrics.precision_score(y_test, result[\"preds\"])\n", + "result[\"Recall_train\"] = metrics.recall_score(y_train, result[\"train_preds\"])\n", + "result[\"Recall_test\"] = metrics.recall_score(y_test, result[\"preds\"])\n", + "result[\"Accuracy_train\"] = metrics.accuracy_score(y_train, result[\"train_preds\"])\n", + "result[\"Accuracy_test\"] = metrics.accuracy_score(y_test, result[\"preds\"])\n", + "result[\"ROC_AUC_test\"] = metrics.roc_auc_score(y_test, result[\"probs\"])\n", + "result[\"F1_train\"] = metrics.f1_score(y_train, result[\"train_preds\"])\n", + "result[\"F1_test\"] = metrics.f1_score(y_test, result[\"preds\"])\n", + "result[\"MCC_test\"] = metrics.matthews_corrcoef(y_test, result[\"preds\"])\n", + "result[\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(y_test, result[\"preds\"])\n", + "result[\"Confusion_matrix\"] = metrics.confusion_matrix(y_test, result[\"preds\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Формирование данных для оценки старой и новой версии модели" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "optimized_metrics = pd.DataFrame(columns=list(result.keys()))\n", + "optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n", + " data=class_models[optimized_model_type]\n", + ")\n", + "optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n", + " data=result\n", + ")\n", + "optimized_metrics.insert(loc=0, column=\"Name\", value=[\"Old\", \"New\"])\n", + "optimized_metrics = optimized_metrics.set_index(\"Name\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Оценка параметров старой и новой модели" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 Precision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_test
Name        
Old0.9955850.9487181.0000000.9823010.9990980.9855860.9977880.965217
New0.9718000.9230770.9933480.9557520.9927830.9747750.9824560.939130
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "optimized_metrics[\n", + " [\n", + " \"Precision_train\",\n", + " \"Precision_test\",\n", + " \"Recall_train\",\n", + " \"Recall_test\",\n", + " \"Accuracy_train\",\n", + " \"Accuracy_test\",\n", + " \"F1_train\",\n", + " \"F1_test\",\n", + " ]\n", + "].style.background_gradient(\n", + " cmap=\"plasma\",\n", + " low=0.3,\n", + " high=1,\n", + " subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n", + ").background_gradient(\n", + " cmap=\"viridis\",\n", + " low=1,\n", + " high=0.3,\n", + " subset=[\n", + " \"Precision_train\",\n", + " \"Precision_test\",\n", + " \"Recall_train\",\n", + " \"Recall_test\",\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 Accuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_test
Name     
Old0.9855860.9652170.9990390.9561300.956360
New0.9747750.9391300.9962760.9232270.923450
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "optimized_metrics[\n", + " [\n", + " \"Accuracy_test\",\n", + " \"F1_test\",\n", + " \"ROC_AUC_test\",\n", + " \"Cohen_kappa_test\",\n", + " \"MCC_test\",\n", + " ]\n", + "].style.background_gradient(\n", + " cmap=\"plasma\",\n", + " low=0.3,\n", + " high=1,\n", + " subset=[\n", + " \"ROC_AUC_test\",\n", + " \"MCC_test\",\n", + " \"Cohen_kappa_test\",\n", + " ],\n", + ").background_gradient(\n", + " cmap=\"viridis\",\n", + " low=1,\n", + " high=0.3,\n", + " subset=[\n", + " \"Accuracy_test\",\n", + " \"F1_test\",\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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i6bF5fZS2MaNG2vChAmSpPr16+vFF1/Uxo0b1alTJ23cuFH79+/X0aNHbWGxZMkS3Xjjjdq1a5duueUWSReCetGiRapUqZIkqV+/ftq4caOmTp162e88fvy4EhMTFRcXJ+nCD/fPpkyZolatLizsMXDgQI0bN06pqam2Y//617/qo48+0tixY3Xu3DnNmzdPixYtsq02+Morr2j9+vV69dVXNXr0aFu76enpuvvuu1W/fn2lpKTIx+dCacqECRM0a9Ys20pOtWvX1oEDBzR//nwNGDDA9vkRI0bYrfZUnHMpMm7cOI0aNcr2OisrixD+XdLUH9SyU5Yevauufj5JuRDgqbKzs21BKklHjx7V3r17FRoaqtDQUE2cOFGJiYmKiIhQamqqxowZYxtQSVJMTIy6dOmiwYMH6+WXX1Z+fr6GDRume+65x7YiLLlGrpUm57K89cMRX0XWynN3V+AmRTOVoebfdDorwLa/svk3HU6rIkm6udEJxTc+rr+M7K/zORf+H37+v63VIma5usR/q5R1TV3eb5Scq100bd68uaRLL5oWh9tnLBs3bmz3unr16rYR88GDBxUVFWUXErGxsQoJCdHBgwdt+2rVqmUL3z+3cTkPP/ywLWAnTJigL7/88qr9Cg8PV0BAgF24hYeH274jNTVV+fn5tsCWpIoVK+rWW2+166ckderUSfXq1dPy5ctt4Xvu3DmlpqZq4MCBCgoKsm1TpkxRamqq3ecvvqm2uOdSxNfX95JpdViVNPUH/V+XTI35W12dSqPcA3AJN13Z3b17t5o1a6ZmzS6s5jtq1Cg1a9ZM48ePl7e3t7788kvdeeedatCggQYOHKjmzZvr448/titBWrp0qRo1aqQOHTqoW7duat26tf7zn//Y3ifXyLXSxC+gUJHReTqd4fa5BLjJyZ8r6ZdMf93c6EfbvgC/PMXU/klfHwmXdGGlc0myWk12n7VYTfLycsEUmidw44xldna29u7dq71790r646Lp8ePHlZ2drdGjR2vHjh06duyYNm7cqJ49e17xoulnn32mTz/99JKLpsXh9oHln2/SN5lMslgsJdrGoEGDdOTIEfXr10/79+9XixYt7Mp//tymyWQypJ+S1L17d23dulUHDhyw7St6+Ogrr7xi+0uxd+9effXVV9qxY4fd5wMDAx0+F1zZsGk/qn3vXzUjKVq/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tXDhQj333HMuPReXMnhZ9qysLLstNzf3il/93XffKTIyUnXq1FHfvn11/PhxSdKePXuUn5+vjh072o5t1KiRatasqe3bt5fszwPlArlWvpFr5FpJPW6ktFTisCosSi2z2aytW7fqhRdeUFZWlqKjozVr1ix17dpVy5cvd7i9gIAArVu3To888ohuueUWBQQEKDEx8Yq/5CIiIrRp0ya1a9dOffv2VUpKitasWaMnn3xSDz74oH766SdFRESoTZs2lwR4cc8DV2YymfTee+9p+PDhatOmjby8vNSlSxenS2IKCwuVlJSkH374QWazWV26dNHzzz/vVJszZsyQxWJRv379dPbsWbVo0ULr1q1T5cqVL3v8888/r8LCQrVv316bN2/WoEGDFBAQoH/9618aPXq0AgMDFRcXpxEjRrj8XFzGYpVMBpT7WC60cfE9S5I0YcKES5b5l6SWLVtq0aJFatiwoU6ePKmJEyfq9ttv11dffaX09HT5+PgoJCTE7jPh4eFKT093vq8o98i18o1cI9eK3Y6Diipx/qyoEiclJUXt27eXJC1cuFAxMTHasWOHbrvtNqe7ezGT1VqGC3kBAGVKVlaWgoOD1bHuCFXw9nW6vYLCXG1IfUFpaWkym822/b6+vvL1vXb7Z86cUXR0tJ577jn5+/vrwQcfvGS289Zbb9Udd9xhe+4fAABF3J1rycnJ+te//qXg4GD5+fkpPj5e06dPV82aNbVp0yZ16NBBv/76q91F0+joaI0YMUIjR450ur8XoxQWAOB6BpcMmc1mu604g0pJCgkJUYMGDXT48GFFREQoLy/P9nDvIqdOnbrslWAAAGwMzrWoqCgFBwfbtunTp1/2a4sqcT744APNmzdPR48e1e23366zZ8+6vBKHUlgAgBsY9CBpOddGdna2UlNT1a9fPzVv3lwVK1bUxo0blZiYKEk6dOiQjh8/rvj4eAP6CgDwXMbm2uVmLC/n4hL0xo0bq2XLloqOjtabb74pf39/A/pTfAwsAQDlxmOPPaYePXooOjpaJ06c0IQJE+Tt7a17771XwcHBGjhwoEaNGqXQ0FCZzWYNHz5c8fHxht+HAgDA1RRV4Djq4kqcTp062SpxLp61LKlKHEphAQCu56bV83744Qfde++9atiwofr06aMqVapox44dtoe/P//88/rLX/6ixMREtWnTRhER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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_, ax = plt.subplots(1, 2, figsize=(10, 4), sharex=False, sharey=False\n", + ")\n", + "\n", + "for index in range(0, len(optimized_metrics)):\n", + " c_matrix = optimized_metrics.iloc[index][\"Confusion_matrix\"]\n", + " disp = ConfusionMatrixDisplay(\n", + " confusion_matrix=c_matrix, display_labels=[\"smokers\", \"non smokers\"]\n", + " ).plot(ax=ax.flat[index])\n", + "\n", + "plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.3)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lec4_reg.ipynb b/lec4_reg.ipynb new file mode 100644 index 0000000..e3f2f3f --- /dev/null +++ b/lec4_reg.ipynb @@ -0,0 +1,1593 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Загрузка данных" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrenchargessex_maleregion_northwestregion_southeastregion_southwestsmoker_yes
01927.900016884.924000.00.00.01.01.0
11833.77011725.552301.00.01.00.00.0
22833.00034449.462001.00.01.00.00.0
33322.705021984.470611.01.00.00.00.0
43228.88003866.855201.01.00.00.00.0
..............................
27674745.32018569.861800.00.01.00.00.0
27682134.60002020.177000.00.00.01.00.0
27691926.030116450.894701.01.00.00.01.0
27702318.715021595.382291.01.00.00.00.0
27715431.60009850.432001.00.00.01.00.0
\n", + "

2772 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " age bmi children charges sex_male region_northwest \\\n", + "0 19 27.900 0 16884.92400 0.0 0.0 \n", + "1 18 33.770 1 1725.55230 1.0 0.0 \n", + "2 28 33.000 3 4449.46200 1.0 0.0 \n", + "3 33 22.705 0 21984.47061 1.0 1.0 \n", + "4 32 28.880 0 3866.85520 1.0 1.0 \n", + "... ... ... ... ... ... ... \n", + "2767 47 45.320 1 8569.86180 0.0 0.0 \n", + "2768 21 34.600 0 2020.17700 0.0 0.0 \n", + "2769 19 26.030 1 16450.89470 1.0 1.0 \n", + "2770 23 18.715 0 21595.38229 1.0 1.0 \n", + "2771 54 31.600 0 9850.43200 1.0 0.0 \n", + "\n", + " region_southeast region_southwest smoker_yes \n", + "0 0.0 1.0 1.0 \n", + "1 1.0 0.0 0.0 \n", + "2 1.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "... ... ... ... \n", + "2767 1.0 0.0 0.0 \n", + "2768 0.0 1.0 0.0 \n", + "2769 0.0 0.0 1.0 \n", + "2770 0.0 0.0 0.0 \n", + "2771 0.0 1.0 0.0 \n", + "\n", + "[2772 rows x 9 columns]" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "from sklearn.preprocessing import OneHotEncoder\n", + "import numpy as np # type: ignore\n", + "\n", + "from sklearn import set_config\n", + "\n", + "set_config(transform_output=\"pandas\")\n", + "\n", + "random_state = 9\n", + "\n", + "df = pd.read_csv(\"data/Medical_insurance.csv\", index_col=False)\n", + "\n", + "encoder = OneHotEncoder(sparse_output=False, drop=\"first\")\n", + "\n", + "encoded_values = encoder.fit_transform(df[[\"sex\", \"region\", \"smoker\"]])\n", + "\n", + "encoded_columns = encoder.get_feature_names_out([\"sex\", \"region\", \"smoker\"])\n", + "\n", + "encoded_values_df = pd.DataFrame(encoded_values, columns=encoded_columns)\n", + "\n", + "df = pd.concat([df, encoded_values_df], axis=1)\n", + "\n", + "df = df.drop([\"sex\", \"smoker\", \"region\"], axis=1)\n", + "\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Формирование выборок" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'X_train'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrensex_maleregion_northwestregion_southeastregion_southwestsmoker_yes
21462234.58020.00.00.00.00.0
4721929.80000.00.00.01.00.0
8016435.97000.00.01.00.00.0
843734.80020.00.00.01.01.0
20286133.91501.00.00.00.00.0
...........................
9793629.92000.00.01.00.00.0
14755526.98000.01.00.00.00.0
25473442.13021.00.01.00.00.0
25532924.60020.00.00.01.00.0
19746135.91000.00.00.00.00.0
\n", + "

2217 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " age bmi children sex_male region_northwest region_southeast \\\n", + "2146 22 34.580 2 0.0 0.0 0.0 \n", + "472 19 29.800 0 0.0 0.0 0.0 \n", + "801 64 35.970 0 0.0 0.0 1.0 \n", + "84 37 34.800 2 0.0 0.0 0.0 \n", + "2028 61 33.915 0 1.0 0.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "979 36 29.920 0 0.0 0.0 1.0 \n", + "1475 55 26.980 0 0.0 1.0 0.0 \n", + "2547 34 42.130 2 1.0 0.0 1.0 \n", + "2553 29 24.600 2 0.0 0.0 0.0 \n", + "1974 61 35.910 0 0.0 0.0 0.0 \n", + "\n", + " region_southwest smoker_yes \n", + "2146 0.0 0.0 \n", + "472 1.0 0.0 \n", + "801 0.0 0.0 \n", + "84 1.0 1.0 \n", + "2028 0.0 0.0 \n", + "... ... ... \n", + "979 0.0 0.0 \n", + "1475 0.0 0.0 \n", + "2547 0.0 0.0 \n", + "2553 1.0 0.0 \n", + "1974 0.0 0.0 \n", + "\n", + "[2217 rows x 8 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'y_train'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
charges
21463925.75820
4721744.46500
80114313.84630
8439836.51900
202813143.86485
......
9794889.03680
147511082.57720
25475124.18870
25534529.47700
197413635.63790
\n", + "

2217 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " charges\n", + "2146 3925.75820\n", + "472 1744.46500\n", + "801 14313.84630\n", + "84 39836.51900\n", + "2028 13143.86485\n", + "... ...\n", + "979 4889.03680\n", + "1475 11082.57720\n", + "2547 5124.18870\n", + "2553 4529.47700\n", + "1974 13635.63790\n", + "\n", + "[2217 rows x 1 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'X_test'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrensex_maleregion_northwestregion_southeastregion_southwestsmoker_yes
11015328.60031.00.00.01.00.0
20255633.66041.00.01.00.00.0
3073033.33010.00.01.00.00.0
8402131.10001.00.00.01.00.0
20904729.54510.01.00.00.00.0
...........................
15874832.23010.00.01.00.00.0
11774027.40010.00.00.01.00.0
12595223.18000.00.00.00.00.0
12911934.90001.00.00.01.01.0
20405935.20000.00.01.00.00.0
\n", + "

555 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " age bmi children sex_male region_northwest region_southeast \\\n", + "1101 53 28.600 3 1.0 0.0 0.0 \n", + "2025 56 33.660 4 1.0 0.0 1.0 \n", + "307 30 33.330 1 0.0 0.0 1.0 \n", + "840 21 31.100 0 1.0 0.0 0.0 \n", + "2090 47 29.545 1 0.0 1.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "1587 48 32.230 1 0.0 0.0 1.0 \n", + "1177 40 27.400 1 0.0 0.0 0.0 \n", + "1259 52 23.180 0 0.0 0.0 0.0 \n", + "1291 19 34.900 0 1.0 0.0 0.0 \n", + "2040 59 35.200 0 0.0 0.0 1.0 \n", + "\n", + " region_southwest smoker_yes \n", + "1101 1.0 0.0 \n", + "2025 0.0 0.0 \n", + "307 0.0 0.0 \n", + "840 1.0 0.0 \n", + "2090 0.0 0.0 \n", + "... ... ... \n", + "1587 0.0 0.0 \n", + "1177 1.0 0.0 \n", + "1259 0.0 0.0 \n", + "1291 1.0 1.0 \n", + "2040 0.0 0.0 \n", + "\n", + "[555 rows x 8 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'y_test'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
charges
110111253.42100
202512949.15540
3074151.02870
8401526.31200
20908930.93455
......
15878871.15170
11776496.88600
125910197.77220
129134828.65400
204012244.53100
\n", + "

555 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " charges\n", + "1101 11253.42100\n", + "2025 12949.15540\n", + "307 4151.02870\n", + "840 1526.31200\n", + "2090 8930.93455\n", + "... ...\n", + "1587 8871.15170\n", + "1177 6496.88600\n", + "1259 10197.77220\n", + "1291 34828.65400\n", + "2040 12244.53100\n", + "\n", + "[555 rows x 1 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from utils import split_stratified_into_train_val_test\n", + "\n", + "X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n", + " df,\n", + " stratify_colname=\"age\",\n", + " target_colname=\"charges\",\n", + " frac_train=0.80,\n", + " frac_val=0,\n", + " frac_test=0.20,\n", + " random_state=random_state,\n", + ")\n", + "\n", + "X_train = X_train.drop([\"charges\"], axis=1)\n", + "X_test = X_test.drop([\"charges\"], axis=1)\n", + "\n", + "display(\"X_train\", X_train)\n", + "display(\"y_train\", y_train)\n", + "\n", + "display(\"X_test\", X_test)\n", + "display(\"y_test\", y_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Определение перечня алгоритмов решения задачи аппроксимации (регрессии)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn import linear_model, tree, neighbors, ensemble, neural_network\n", + "\n", + "random_state = 9\n", + "\n", + "models = {\n", + " \"linear\": {\"model\": linear_model.LinearRegression(n_jobs=-1)},\n", + " \"linear_poly\": {\n", + " \"model\": make_pipeline(\n", + " PolynomialFeatures(degree=2),\n", + " linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n", + " )\n", + " },\n", + " \"linear_interact\": {\n", + " \"model\": make_pipeline(\n", + " PolynomialFeatures(interaction_only=True),\n", + " linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n", + " )\n", + " },\n", + " \"ridge\": {\"model\": linear_model.RidgeCV()},\n", + " \"decision_tree\": {\n", + " \"model\": tree.DecisionTreeRegressor(max_depth=7, random_state=random_state)\n", + " },\n", + " \"knn\": {\"model\": neighbors.KNeighborsRegressor(n_neighbors=7, n_jobs=-1)},\n", + " \"random_forest\": {\n", + " \"model\": ensemble.RandomForestRegressor(\n", + " max_depth=7, random_state=random_state, n_jobs=-1\n", + " )\n", + " },\n", + " \"mlp\": {\n", + " \"model\": neural_network.MLPRegressor(\n", + " activation=\"tanh\",\n", + " hidden_layer_sizes=(3,),\n", + " max_iter=500,\n", + " early_stopping=True,\n", + " random_state=random_state,\n", + " )\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Определение функции для стандартизации числовых значений для MLP" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "from pandas import DataFrame\n", + "from sklearn import preprocessing\n", + "\n", + "\n", + "stndart_scaler = preprocessing.StandardScaler()\n", + "\n", + "\n", + "def std_q(df: DataFrame) -> DataFrame:\n", + " df[\"age\"] = np.array(stndart_scaler.fit_transform(df[\"age\"].to_numpy().reshape(-1, 1))).reshape(\n", + " df[\"age\"].shape\n", + " )\n", + " df[\"bmi\"] = np.array(\n", + " stndart_scaler.fit_transform(df[\"bmi\"].to_numpy().reshape(-1, 1))\n", + " ).reshape(df[\"bmi\"].shape)\n", + " df[\"children\"] = np.array(\n", + " stndart_scaler.fit_transform(df[\"children\"].to_numpy().reshape(-1, 1))\n", + " ).reshape(df[\"children\"].shape)\n", + " return df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Обучение и оценка моделей с помощью различных алгоритмов" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: linear\n", + "Model: linear_poly\n", + "Model: linear_interact\n", + "Model: ridge\n", + "Model: decision_tree\n", + "Model: knn\n", + "Model: random_forest\n", + "Model: mlp\n" + ] + } + ], + "source": [ + "import math\n", + "from pandas import DataFrame\n", + "from sklearn import metrics\n", + "\n", + "for model_name in models.keys():\n", + " print(f\"Model: {model_name}\")\n", + "\n", + " x_train: DataFrame = X_train.copy()\n", + " x_test: DataFrame = X_test.copy()\n", + "\n", + " if model_name == \"mlp\":\n", + " x_train = std_q(x_train)\n", + " x_test = std_q(x_test)\n", + " \n", + " fitted_model = models[model_name][\"model\"].fit(\n", + " x_train.values, y_train.values.ravel()\n", + " )\n", + " y_train_pred = fitted_model.predict(x_train.values)\n", + " y_test_pred = fitted_model.predict(x_test.values)\n", + " models[model_name][\"fitted\"] = fitted_model\n", + " models[model_name][\"train_preds\"] = y_train_pred\n", + " models[model_name][\"preds\"] = y_test_pred\n", + " models[model_name][\"RMSE_train\"] = math.sqrt(\n", + " metrics.mean_squared_error(y_train, y_train_pred)\n", + " )\n", + " models[model_name][\"RMSE_test\"] = math.sqrt(\n", + " metrics.mean_squared_error(y_test, y_test_pred)\n", + " )\n", + " models[model_name][\"RMAE_test\"] = math.sqrt(\n", + " metrics.mean_absolute_error(y_test, y_test_pred)\n", + " )\n", + " models[model_name][\"R2_test\"] = metrics.r2_score(y_test, y_test_pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Вывод результатов оценки" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 RMSE_trainRMSE_testRMAE_testR2_test
random_forest3221.4697073953.66105345.7416090.901103
decision_tree3643.2791934288.04072647.3590730.883668
linear_poly4731.0246544868.81737154.2577450.850021
linear_interact4776.3937164938.69955654.6412090.845685
ridge6028.4276176216.54408165.5849480.755499
linear6028.4269936216.58882965.5808790.755496
knn8230.9590709715.10258181.1292010.402859
mlp17848.19889518518.275054116.605174-1.169619
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reg_metrics = pd.DataFrame.from_dict(models, \"index\")[\n", + " [\"RMSE_train\", \"RMSE_test\", \"RMAE_test\", \"R2_test\"]\n", + "]\n", + "reg_metrics.sort_values(by=\"RMSE_test\").style.background_gradient(\n", + " cmap=\"viridis\", low=1, high=0.3, subset=[\"RMSE_train\", \"RMSE_test\"]\n", + ").background_gradient(cmap=\"plasma\", low=0.3, high=1, subset=[\"RMAE_test\", \"R2_test\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Вывод реального и \"спрогнозированного\" результата для обучающей и тестовой выборок" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Получение лучшей модели" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'random_forest'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "best_model = str(reg_metrics.sort_values(by=\"RMSE_test\").iloc[0].name)\n", + "\n", + "display(best_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Вывод для обучающей выборки" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrensex_maleregion_northwestregion_southeastregion_southwestsmoker_yeschargesChargesPred
21462234.58020.00.00.00.00.03925.758204868.448184
4721929.80000.00.00.01.00.01744.465003011.805771
8016435.97000.00.01.00.00.014313.8463013841.766282
843734.80020.00.00.01.01.039836.5190039427.673528
20286133.91501.00.00.00.00.013143.8648513575.291528
\n", + "
" + ], + "text/plain": [ + " age bmi children sex_male region_northwest region_southeast \\\n", + "2146 22 34.580 2 0.0 0.0 0.0 \n", + "472 19 29.800 0 0.0 0.0 0.0 \n", + "801 64 35.970 0 0.0 0.0 1.0 \n", + "84 37 34.800 2 0.0 0.0 0.0 \n", + "2028 61 33.915 0 1.0 0.0 0.0 \n", + "\n", + " region_southwest smoker_yes charges ChargesPred \n", + "2146 0.0 0.0 3925.75820 4868.448184 \n", + "472 1.0 0.0 1744.46500 3011.805771 \n", + "801 0.0 0.0 14313.84630 13841.766282 \n", + "84 1.0 1.0 39836.51900 39427.673528 \n", + "2028 0.0 0.0 13143.86485 13575.291528 " + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat(\n", + " [\n", + " X_train,\n", + " y_train,\n", + " pd.Series(\n", + " models[best_model][\"train_preds\"],\n", + " index=y_train.index,\n", + " name=\"ChargesPred\",\n", + " ),\n", + " ],\n", + " axis=1,\n", + ").head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Вывод для тестовой выборки" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agebmichildrensex_maleregion_northwestregion_southeastregion_southwestsmoker_yeschargesChargesPred
11015328.60031.00.00.01.00.011253.4210012139.772544
20255633.66041.00.01.00.00.012949.1554014977.306757
3073033.33010.00.01.00.00.04151.028705778.492115
8402131.10001.00.00.01.00.01526.312003324.843009
20904729.54510.01.00.00.00.08930.9345511318.629065
\n", + "
" + ], + "text/plain": [ + " age bmi children sex_male region_northwest region_southeast \\\n", + "1101 53 28.600 3 1.0 0.0 0.0 \n", + "2025 56 33.660 4 1.0 0.0 1.0 \n", + "307 30 33.330 1 0.0 0.0 1.0 \n", + "840 21 31.100 0 1.0 0.0 0.0 \n", + "2090 47 29.545 1 0.0 1.0 0.0 \n", + "\n", + " region_southwest smoker_yes charges ChargesPred \n", + "1101 1.0 0.0 11253.42100 12139.772544 \n", + "2025 0.0 0.0 12949.15540 14977.306757 \n", + "307 0.0 0.0 4151.02870 5778.492115 \n", + "840 1.0 0.0 1526.31200 3324.843009 \n", + "2090 0.0 0.0 8930.93455 11318.629065 " + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat(\n", + " [\n", + " X_test,\n", + " y_test,\n", + " pd.Series(\n", + " models[best_model][\"preds\"],\n", + " index=y_test.index,\n", + " name=\"ChargesPred\",\n", + " ),\n", + " ],\n", + " axis=1,\n", + ").head(5)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/poetry.lock b/poetry.lock index 2f5cecc..58483c4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -16,19 +16,19 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "apiflask" -version = "2.2.0" +version = "2.2.1" description = "A lightweight web API framework based on Flask and marshmallow-code projects." optional = false python-versions = "*" files = [ - {file = "APIFlask-2.2.0-py3-none-any.whl", hash = "sha256:dd0dc111538c7f284c09a01d90aaf04f1e716ba116886d5a3aa5b1ffa4cce2f4"}, - {file = "apiflask-2.2.0.tar.gz", hash = "sha256:17fc4d4e852a483c51e4c98f158113f00b41258de22ae323397766bd99335206"}, + {file = "APIFlask-2.2.1-py3-none-any.whl", hash = "sha256:31619542dae6c7b86ca0cd0b1277ccaad68e99b69dfef201791b814432d26965"}, + {file = "apiflask-2.2.1.tar.gz", hash = "sha256:9c7573fedbb75524396c5733d4b0c150d1839a5d52b905c15b6a36e030c44908"}, ] [package.dependencies] @@ -46,21 +46,21 @@ yaml = ["pyyaml"] [[package]] name = "apispec" -version = "6.6.1" +version = "6.7.1" description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "apispec-6.6.1-py3-none-any.whl", hash = "sha256:6460315cb38ac6a2ff42d9e2b8dc0435c37d4428d3abeda96ff97b5dc8eb6b94"}, - {file = "apispec-6.6.1.tar.gz", hash = "sha256:f5caa47cee75fe03b9c50b5594048b4c052eeca2c212e0dac12dbb6175d9a659"}, + {file = "apispec-6.7.1-py3-none-any.whl", hash = "sha256:d99e7a564f3871327c17b3e43726cc1e6ade2c97aa05706644a48818fc37999e"}, + {file = "apispec-6.7.1.tar.gz", hash = "sha256:c01b8b6ff40ffedf55b79a67f9dd920e9b2fc3909aae116facf6c8372a08b933"}, ] [package.dependencies] packaging = ">=21.3" [package.extras] -dev = ["apispec[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["apispec[marshmallow]", "pyyaml (==6.0.1)", "sphinx (==7.3.7)", "sphinx-issues (==4.1.0)", "sphinx-rtd-theme (==2.0.0)"] +dev = ["apispec[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["apispec[marshmallow]", "pyyaml (==6.0.2)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-rtd-theme (==3.0.1)"] marshmallow = ["marshmallow (>=3.18.0)"] tests = ["apispec[marshmallow,yaml]", "openapi-spec-validator (==0.7.1)", "pytest"] yaml = ["PyYAML (>=3.10)"] @@ -237,21 +237,20 @@ lxml = ["lxml"] [[package]] name = "bleach" -version = "6.1.0" +version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, - {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, + {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, + {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, ] [package.dependencies] -six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.3)"] +css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "blinker" @@ -277,78 +276,78 @@ files = [ [[package]] name = "cffi" -version = "1.17.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, - {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, - {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, - {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, - {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, - {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, - {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, - {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, - {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, - {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, - {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, - {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, - {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, - {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, - {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, - {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -356,101 +355,116 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -607,33 +621,37 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.5" +version = "1.8.8" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, - {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, - {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, - {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, - {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, - {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, - {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, - {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, - {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, - {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, - {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, - {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, - {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, - {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, - {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, - {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, - {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, - {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, - {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, - {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, - {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, - {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, + {file = "debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6"}, + {file = "debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d"}, + {file = "debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f"}, + {file = "debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9"}, + {file = "debugpy-1.8.8-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:c399023146e40ae373753a58d1be0a98bf6397fadc737b97ad612886b53df318"}, + {file = "debugpy-1.8.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cc7b162586ea2171eea055985da2702b0723f6f907a423c9b2da5996ad67ba"}, + {file = "debugpy-1.8.8-cp311-cp311-win32.whl", hash = "sha256:eea8821d998ebeb02f0625dd0d76839ddde8cbf8152ebbe289dd7acf2cdc6b98"}, + {file = "debugpy-1.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:d4483836da2a533f4b1454dffc9f668096ac0433de855f0c22cdce8c9f7e10c4"}, + {file = "debugpy-1.8.8-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:0cc94186340be87b9ac5a707184ec8f36547fb66636d1029ff4f1cc020e53996"}, + {file = "debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9"}, + {file = "debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9"}, + {file = "debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864"}, + {file = "debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804"}, + {file = "debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f"}, + {file = "debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add"}, + {file = "debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b"}, + {file = "debugpy-1.8.8-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:143ef07940aeb8e7316de48f5ed9447644da5203726fca378f3a6952a50a9eae"}, + {file = "debugpy-1.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95651bdcbfd3b27a408869a53fbefcc2bcae13b694daee5f1365b1b83a00113"}, + {file = "debugpy-1.8.8-cp38-cp38-win32.whl", hash = "sha256:26b461123a030e82602a750fb24d7801776aa81cd78404e54ab60e8b5fecdad5"}, + {file = "debugpy-1.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3cbf1833e644a3100eadb6120f25be8a532035e8245584c4f7532937edc652a"}, + {file = "debugpy-1.8.8-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:53709d4ec586b525724819dc6af1a7703502f7e06f34ded7157f7b1f963bb854"}, + {file = "debugpy-1.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a9c013077a3a0000e83d97cf9cc9328d2b0bbb31f56b0e99ea3662d29d7a6a2"}, + {file = "debugpy-1.8.8-cp39-cp39-win32.whl", hash = "sha256:ffe94dd5e9a6739a75f0b85316dc185560db3e97afa6b215628d1b6a17561cb2"}, + {file = "debugpy-1.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5c0e5a38c7f9b481bf31277d2f74d2109292179081f11108e668195ef926c0f9"}, + {file = "debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f"}, + {file = "debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091"}, ] [[package]] @@ -794,53 +812,59 @@ tests = ["flask-marshmallow[sqlalchemy]", "pytest"] [[package]] name = "fonttools" -version = "4.53.1" +version = "4.54.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, - {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, - {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, - {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, - {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, - {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, - {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, - {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, - {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, - {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, - {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, - {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, - {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, - {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, + {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, + {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, + {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, + {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, + {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, + {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, + {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, + {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, + {file = "fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20"}, + {file = "fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2"}, + {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7"}, + {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07"}, + {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8"}, + {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a"}, + {file = "fonttools-4.54.1-cp311-cp311-win32.whl", hash = "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc"}, + {file = "fonttools-4.54.1-cp311-cp311-win_amd64.whl", hash = "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6"}, + {file = "fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d"}, + {file = "fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08"}, + {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263"}, + {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab"}, + {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d"}, + {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714"}, + {file = "fonttools-4.54.1-cp312-cp312-win32.whl", hash = "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac"}, + {file = "fonttools-4.54.1-cp312-cp312-win_amd64.whl", hash = "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e"}, + {file = "fonttools-4.54.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff"}, + {file = "fonttools-4.54.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb"}, + {file = "fonttools-4.54.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a"}, + {file = "fonttools-4.54.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c"}, + {file = "fonttools-4.54.1-cp313-cp313-win32.whl", hash = "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58"}, + {file = "fonttools-4.54.1-cp313-cp313-win_amd64.whl", hash = "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d"}, + {file = "fonttools-4.54.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b"}, + {file = "fonttools-4.54.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c"}, + {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556"}, + {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b"}, + {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1"}, + {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386"}, + {file = "fonttools-4.54.1-cp38-cp38-win32.whl", hash = "sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664"}, + {file = "fonttools-4.54.1-cp38-cp38-win_amd64.whl", hash = "sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab"}, + {file = "fonttools-4.54.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13"}, + {file = "fonttools-4.54.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac"}, + {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986"}, + {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55"}, + {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9"}, + {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33"}, + {file = "fonttools-4.54.1-cp39-cp39-win32.whl", hash = "sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a"}, + {file = "fonttools-4.54.1-cp39-cp39-win_amd64.whl", hash = "sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7"}, + {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, + {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, ] [package.extras] @@ -881,13 +905,13 @@ files = [ [[package]] name = "holidays" -version = "0.59" +version = "0.60" description = "World Holidays Framework" optional = false python-versions = ">=3.9" files = [ - {file = "holidays-0.59-py3-none-any.whl", hash = "sha256:4576ec7aaad7cd66463236c110bcbd533ac7e739e0e9d3cbeccf8107384a8a92"}, - {file = "holidays-0.59.tar.gz", hash = "sha256:c5cd2e1c0c27a64217b10faf2e8fcc224f5bb64087b56b70c6aff21f6379e6e4"}, + {file = "holidays-0.60-py3-none-any.whl", hash = "sha256:d857949c5ee35655215a10c5a26e6a856bdc3beccc4fbbc8debef98dfba17b82"}, + {file = "holidays-0.60.tar.gz", hash = "sha256:495fc5123f5d92b92673237375eb8c15a03d21c647b089db509b7d9612267556"}, ] [package.dependencies] @@ -895,13 +919,13 @@ python-dateutil = "*" [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] @@ -912,7 +936,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" @@ -941,24 +965,27 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "imbalanced-learn" -version = "0.12.3" +version = "0.12.4" description = "Toolbox for imbalanced dataset in machine learning." optional = false python-versions = "*" files = [ - {file = "imbalanced-learn-0.12.3.tar.gz", hash = "sha256:5b00796a01419e9102bd425e27c319d58d1f6cf2dfa751e02ed7f4edf67c3c1b"}, - {file = "imbalanced_learn-0.12.3-py3-none-any.whl", hash = "sha256:0e83e8226cb27dd567dff6aef0136bde0f54922ea1bd9d5f38f62701dc51a152"}, + {file = "imbalanced-learn-0.12.4.tar.gz", hash = "sha256:8153ba385d296b07d97e0901a2624a86c06b48c94c2f92da3a5354827697b7a3"}, + {file = "imbalanced_learn-0.12.4-py3-none-any.whl", hash = "sha256:d47fc599160d3ea882e712a3a6b02bdd353c1a6436d8d68d41b1922e6ee4a703"}, ] [package.dependencies] @@ -1028,13 +1055,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.27.0" +version = "8.29.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, - {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, + {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, + {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, ] [package.dependencies] @@ -1208,13 +1235,13 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.12.1" +version = "2024.10.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, ] [package.dependencies] @@ -1241,13 +1268,13 @@ notebook = "*" [[package]] name = "jupyter-client" -version = "8.6.2" +version = "8.6.3" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, - {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, ] [package.dependencies] @@ -1401,13 +1428,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.5" +version = "4.3.0" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, - {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, + {file = "jupyterlab-4.3.0-py3-none-any.whl", hash = "sha256:f67e1095ad61ae04349024f0b40345062ab108a0c6998d9810fec6a3c1a70cd5"}, + {file = "jupyterlab-4.3.0.tar.gz", hash = "sha256:7c6835cbf8df0af0ec8a39332e85ff11693fb9a468205343b4fc0bfbc74817e5"}, ] [package.dependencies] @@ -1426,9 +1453,9 @@ tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.6.9)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.1.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.4.1)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.2.post3)", "matplotlib (==3.9.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.14.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] @@ -1604,91 +1631,92 @@ files = [ [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] name = "marshmallow" -version = "3.22.0" +version = "3.23.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "marshmallow-3.22.0-py3-none-any.whl", hash = "sha256:71a2dce49ef901c3f97ed296ae5051135fd3febd2bf43afe0ae9a82143a494d9"}, - {file = "marshmallow-3.22.0.tar.gz", hash = "sha256:4972f529104a220bb8637d595aa4c9762afbe7f7a77d82dc58c1615d70c5823e"}, + {file = "marshmallow-3.23.1-py3-none-any.whl", hash = "sha256:fece2eb2c941180ea1b7fcbd4a83c51bfdd50093fdd3ad2585ee5e1df2508491"}, + {file = "marshmallow-3.23.1.tar.gz", hash = "sha256:3a8dfda6edd8dcdbf216c0ede1d1e78d230a6dc9c5a088f58c4083b974a0d468"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.0.2)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"] -tests = ["pytest", "pytz", "simplejson"] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.14)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] +tests = ["pytest", "simplejson"] [[package]] name = "matplotlib" @@ -1871,26 +1899,26 @@ files = [ [[package]] name = "notebook" -version = "7.2.2" +version = "7.0.7" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, + {file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"}, + {file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" -jupyterlab-server = ">=2.27.1,<3" +jupyterlab = ">=4.0.2,<5" +jupyterlab-server = ">=2.22.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -1911,63 +1939,66 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numpy" -version = "2.1.0" +version = "2.1.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6326ab99b52fafdcdeccf602d6286191a79fe2fda0ae90573c5814cd2b0bc1b8"}, - {file = "numpy-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0937e54c09f7a9a68da6889362ddd2ff584c02d015ec92672c099b61555f8911"}, - {file = "numpy-2.1.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:30014b234f07b5fec20f4146f69e13cfb1e33ee9a18a1879a0142fbb00d47673"}, - {file = "numpy-2.1.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:899da829b362ade41e1e7eccad2cf274035e1cb36ba73034946fccd4afd8606b"}, - {file = "numpy-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08801848a40aea24ce16c2ecde3b756f9ad756586fb2d13210939eb69b023f5b"}, - {file = "numpy-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:398049e237d1aae53d82a416dade04defed1a47f87d18d5bd615b6e7d7e41d1f"}, - {file = "numpy-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0abb3916a35d9090088a748636b2c06dc9a6542f99cd476979fb156a18192b84"}, - {file = "numpy-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10e2350aea18d04832319aac0f887d5fcec1b36abd485d14f173e3e900b83e33"}, - {file = "numpy-2.1.0-cp310-cp310-win32.whl", hash = "sha256:f6b26e6c3b98adb648243670fddc8cab6ae17473f9dc58c51574af3e64d61211"}, - {file = "numpy-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:f505264735ee074250a9c78247ee8618292091d9d1fcc023290e9ac67e8f1afa"}, - {file = "numpy-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:76368c788ccb4f4782cf9c842b316140142b4cbf22ff8db82724e82fe1205dce"}, - {file = "numpy-2.1.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:f8e93a01a35be08d31ae33021e5268f157a2d60ebd643cfc15de6ab8e4722eb1"}, - {file = "numpy-2.1.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9523f8b46485db6939bd069b28b642fec86c30909cea90ef550373787f79530e"}, - {file = "numpy-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54139e0eb219f52f60656d163cbe67c31ede51d13236c950145473504fa208cb"}, - {file = "numpy-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ebbf9fbdabed208d4ecd2e1dfd2c0741af2f876e7ae522c2537d404ca895c3"}, - {file = "numpy-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:378cb4f24c7d93066ee4103204f73ed046eb88f9ad5bb2275bb9fa0f6a02bd36"}, - {file = "numpy-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8f699a709120b220dfe173f79c73cb2a2cab2c0b88dd59d7b49407d032b8ebd"}, - {file = "numpy-2.1.0-cp311-cp311-win32.whl", hash = "sha256:ffbd6faeb190aaf2b5e9024bac9622d2ee549b7ec89ef3a9373fa35313d44e0e"}, - {file = "numpy-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0af3a5987f59d9c529c022c8c2a64805b339b7ef506509fba7d0556649b9714b"}, - {file = "numpy-2.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fe76d75b345dc045acdbc006adcb197cc680754afd6c259de60d358d60c93736"}, - {file = "numpy-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f358ea9e47eb3c2d6eba121ab512dfff38a88db719c38d1e67349af210bc7529"}, - {file = "numpy-2.1.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:dd94ce596bda40a9618324547cfaaf6650b1a24f5390350142499aa4e34e53d1"}, - {file = "numpy-2.1.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b47c551c6724960479cefd7353656498b86e7232429e3a41ab83be4da1b109e8"}, - {file = "numpy-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0756a179afa766ad7cb6f036de622e8a8f16ffdd55aa31f296c870b5679d745"}, - {file = "numpy-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24003ba8ff22ea29a8c306e61d316ac74111cebf942afbf692df65509a05f111"}, - {file = "numpy-2.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b34fa5e3b5d6dc7e0a4243fa0f81367027cb6f4a7215a17852979634b5544ee0"}, - {file = "numpy-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4f982715e65036c34897eb598d64aef15150c447be2cfc6643ec7a11af06574"}, - {file = "numpy-2.1.0-cp312-cp312-win32.whl", hash = "sha256:c4cd94dfefbefec3f8b544f61286584292d740e6e9d4677769bc76b8f41deb02"}, - {file = "numpy-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0cdef204199278f5c461a0bed6ed2e052998276e6d8ab2963d5b5c39a0500bc"}, - {file = "numpy-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8ab81ccd753859ab89e67199b9da62c543850f819993761c1e94a75a814ed667"}, - {file = "numpy-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:442596f01913656d579309edcd179a2a2f9977d9a14ff41d042475280fc7f34e"}, - {file = "numpy-2.1.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:848c6b5cad9898e4b9ef251b6f934fa34630371f2e916261070a4eb9092ffd33"}, - {file = "numpy-2.1.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:54c6a63e9d81efe64bfb7bcb0ec64332a87d0b87575f6009c8ba67ea6374770b"}, - {file = "numpy-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652e92fc409e278abdd61e9505649e3938f6d04ce7ef1953f2ec598a50e7c195"}, - {file = "numpy-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ab32eb9170bf8ffcbb14f11613f4a0b108d3ffee0832457c5d4808233ba8977"}, - {file = "numpy-2.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:8fb49a0ba4d8f41198ae2d52118b050fd34dace4b8f3fb0ee34e23eb4ae775b1"}, - {file = "numpy-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:44e44973262dc3ae79e9063a1284a73e09d01b894b534a769732ccd46c28cc62"}, - {file = "numpy-2.1.0-cp313-cp313-win32.whl", hash = "sha256:ab83adc099ec62e044b1fbb3a05499fa1e99f6d53a1dde102b2d85eff66ed324"}, - {file = "numpy-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:de844aaa4815b78f6023832590d77da0e3b6805c644c33ce94a1e449f16d6ab5"}, - {file = "numpy-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:343e3e152bf5a087511cd325e3b7ecfd5b92d369e80e74c12cd87826e263ec06"}, - {file = "numpy-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f07fa2f15dabe91259828ce7d71b5ca9e2eb7c8c26baa822c825ce43552f4883"}, - {file = "numpy-2.1.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5474dad8c86ee9ba9bb776f4b99ef2d41b3b8f4e0d199d4f7304728ed34d0300"}, - {file = "numpy-2.1.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1f817c71683fd1bb5cff1529a1d085a57f02ccd2ebc5cd2c566f9a01118e3b7d"}, - {file = "numpy-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a3336fbfa0d38d3deacd3fe7f3d07e13597f29c13abf4d15c3b6dc2291cbbdd"}, - {file = "numpy-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a894c51fd8c4e834f00ac742abad73fc485df1062f1b875661a3c1e1fb1c2f6"}, - {file = "numpy-2.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:9156ca1f79fc4acc226696e95bfcc2b486f165a6a59ebe22b2c1f82ab190384a"}, - {file = "numpy-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:624884b572dff8ca8f60fab591413f077471de64e376b17d291b19f56504b2bb"}, - {file = "numpy-2.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:15ef8b2177eeb7e37dd5ef4016f30b7659c57c2c0b57a779f1d537ff33a72c7b"}, - {file = "numpy-2.1.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:e5f0642cdf4636198a4990de7a71b693d824c56a757862230454629cf62e323d"}, - {file = "numpy-2.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15976718c004466406342789f31b6673776360f3b1e3c575f25302d7e789575"}, - {file = "numpy-2.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6c1de77ded79fef664d5098a66810d4d27ca0224e9051906e634b3f7ead134c2"}, - {file = "numpy-2.1.0.tar.gz", hash = "sha256:7dc90da0081f7e1da49ec4e398ede6a8e9cc4f5ebe5f9e06b443ed889ee9aaa2"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"}, + {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"}, + {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"}, + {file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"}, + {file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"}, + {file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"}, + {file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"}, + {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"}, + {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"}, + {file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"}, + {file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"}, + {file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"}, + {file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"}, + {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"}, + {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"}, + {file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"}, + {file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"}, + {file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"}, + {file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"}, + {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"}, + {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"}, + {file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"}, + {file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"}, + {file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"}, + {file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"}, + {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"}, + {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"}, + {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"}, + {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"}, + {file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"}, + {file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"}, + {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"}, ] [[package]] @@ -1983,51 +2014,64 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] name = "pandas" -version = "2.2.2" +version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, - {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, - {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, - {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, - {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, - {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, - {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, ] [package.dependencies] @@ -2103,95 +2147,90 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.4.0" +version = "11.0.0" description = "Python Imaging Library (Fork)" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, - {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, - {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, - {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, - {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, - {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, - {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, - {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, - {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, - {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, - {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, - {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, - {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, - {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, - {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, - {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, - {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, - {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, - {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, - {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"}, + {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"}, + {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"}, + {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"}, + {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"}, + {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"}, + {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"}, + {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"}, + {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"}, + {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"}, + {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"}, + {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"}, + {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"}, + {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"}, + {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"}, + {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"}, + {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"}, + {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"}, + {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"}, + {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"}, + {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -2200,29 +2239,29 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "prometheus-client" -version = "0.20.0" +version = "0.21.0" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, - {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, + {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, + {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, ] [package.extras] @@ -2230,13 +2269,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.47" +version = "3.0.48" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, - {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, + {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, + {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, ] [package.dependencies] @@ -2244,32 +2283,33 @@ wcwidth = "*" [[package]] name = "psutil" -version = "6.0.0" +version = "6.1.0" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, - {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, - {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, - {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, - {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, - {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, - {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, - {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, - {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, - {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, - {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, - {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, - {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, - {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, + {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, + {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, + {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, + {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, + {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, + {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, + {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, + {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, + {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, + {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, + {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, + {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, + {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, + {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, ] [package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] +dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] [[package]] name = "ptyprocess" @@ -2323,13 +2363,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyparsing" -version = "3.1.4" +version = "3.2.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=3.6.8" +python-versions = ">=3.9" files = [ - {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, - {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, + {file = "pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84"}, + {file = "pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c"}, ] [package.extras] @@ -2362,51 +2402,55 @@ files = [ [[package]] name = "pytz" -version = "2024.1" +version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] name = "pywin32" -version = "306" +version = "308" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, ] [[package]] name = "pywinpty" -version = "2.0.13" +version = "2.0.14" description = "Pseudo terminal support for Windows from Python." optional = false python-versions = ">=3.8" files = [ - {file = "pywinpty-2.0.13-cp310-none-win_amd64.whl", hash = "sha256:697bff211fb5a6508fee2dc6ff174ce03f34a9a233df9d8b5fe9c8ce4d5eaf56"}, - {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, - {file = "pywinpty-2.0.13-cp312-none-win_amd64.whl", hash = "sha256:2fd876b82ca750bb1333236ce98488c1be96b08f4f7647cfdf4129dfad83c2d4"}, - {file = "pywinpty-2.0.13-cp38-none-win_amd64.whl", hash = "sha256:61d420c2116c0212808d31625611b51caf621fe67f8a6377e2e8b617ea1c1f7d"}, - {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"}, - {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, + {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, + {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, + {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, + {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, + {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, + {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, ] [[package]] @@ -2655,114 +2699,101 @@ files = [ [[package]] name = "rpds-py" -version = "0.20.0" +version = "0.21.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, + {file = "rpds_py-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590"}, + {file = "rpds_py-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250"}, + {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c"}, + {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e"}, + {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0"}, + {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1"}, + {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5"}, + {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e"}, + {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153"}, + {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624"}, + {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664"}, + {file = "rpds_py-0.21.0-cp310-none-win32.whl", hash = "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682"}, + {file = "rpds_py-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5"}, + {file = "rpds_py-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5555db3e618a77034954b9dc547eae94166391a98eb867905ec8fcbce1308d95"}, + {file = "rpds_py-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:97ef67d9bbc3e15584c2f3c74bcf064af36336c10d2e21a2131e123ce0f924c9"}, + {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab2c2a26d2f69cdf833174f4d9d86118edc781ad9a8fa13970b527bf8236027"}, + {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4e8921a259f54bfbc755c5bbd60c82bb2339ae0324163f32868f63f0ebb873d9"}, + {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a7ff941004d74d55a47f916afc38494bd1cfd4b53c482b77c03147c91ac0ac3"}, + {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5145282a7cd2ac16ea0dc46b82167754d5e103a05614b724457cffe614f25bd8"}, + {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de609a6f1b682f70bb7163da745ee815d8f230d97276db049ab447767466a09d"}, + {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40c91c6e34cf016fa8e6b59d75e3dbe354830777fcfd74c58b279dceb7975b75"}, + {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d2132377f9deef0c4db89e65e8bb28644ff75a18df5293e132a8d67748397b9f"}, + {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0a9e0759e7be10109645a9fddaaad0619d58c9bf30a3f248a2ea57a7c417173a"}, + {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e20da3957bdf7824afdd4b6eeb29510e83e026473e04952dca565170cd1ecc8"}, + {file = "rpds_py-0.21.0-cp311-none-win32.whl", hash = "sha256:f71009b0d5e94c0e86533c0b27ed7cacc1239cb51c178fd239c3cfefefb0400a"}, + {file = "rpds_py-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:e168afe6bf6ab7ab46c8c375606298784ecbe3ba31c0980b7dcbb9631dcba97e"}, + {file = "rpds_py-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d"}, + {file = "rpds_py-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72"}, + {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266"}, + {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be"}, + {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab"}, + {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7"}, + {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf"}, + {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4"}, + {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca"}, + {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b"}, + {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11"}, + {file = "rpds_py-0.21.0-cp312-none-win32.whl", hash = "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952"}, + {file = "rpds_py-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd"}, + {file = "rpds_py-0.21.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ee4eafd77cc98d355a0d02f263efc0d3ae3ce4a7c24740010a8b4012bbb24937"}, + {file = "rpds_py-0.21.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:688c93b77e468d72579351a84b95f976bd7b3e84aa6686be6497045ba84be560"}, + {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38dbf31c57032667dd5a2f0568ccde66e868e8f78d5a0d27dcc56d70f3fcd3b"}, + {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2d6129137f43f7fa02d41542ffff4871d4aefa724a5fe38e2c31a4e0fd343fb0"}, + {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520ed8b99b0bf86a176271f6fe23024323862ac674b1ce5b02a72bfeff3fff44"}, + {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaeb25ccfb9b9014a10eaf70904ebf3f79faaa8e60e99e19eef9f478651b9b74"}, + {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af04ac89c738e0f0f1b913918024c3eab6e3ace989518ea838807177d38a2e94"}, + {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9b76e2afd585803c53c5b29e992ecd183f68285b62fe2668383a18e74abe7a3"}, + {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5afb5efde74c54724e1a01118c6e5c15e54e642c42a1ba588ab1f03544ac8c7a"}, + {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:52c041802a6efa625ea18027a0723676a778869481d16803481ef6cc02ea8cb3"}, + {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee1e4fc267b437bb89990b2f2abf6c25765b89b72dd4a11e21934df449e0c976"}, + {file = "rpds_py-0.21.0-cp313-none-win32.whl", hash = "sha256:0c025820b78817db6a76413fff6866790786c38f95ea3f3d3c93dbb73b632202"}, + {file = "rpds_py-0.21.0-cp313-none-win_amd64.whl", hash = "sha256:320c808df533695326610a1b6a0a6e98f033e49de55d7dc36a13c8a30cfa756e"}, + {file = "rpds_py-0.21.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2c51d99c30091f72a3c5d126fad26236c3f75716b8b5e5cf8effb18889ced928"}, + {file = "rpds_py-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cbd7504a10b0955ea287114f003b7ad62330c9e65ba012c6223dba646f6ffd05"}, + {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dcc4949be728ede49e6244eabd04064336012b37f5c2200e8ec8eb2988b209c"}, + {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f414da5c51bf350e4b7960644617c130140423882305f7574b6cf65a3081cecb"}, + {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9afe42102b40007f588666bc7de82451e10c6788f6f70984629db193849dced1"}, + {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b929c2bb6e29ab31f12a1117c39f7e6d6450419ab7464a4ea9b0b417174f044"}, + {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8404b3717da03cbf773a1d275d01fec84ea007754ed380f63dfc24fb76ce4592"}, + {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e12bb09678f38b7597b8346983d2323a6482dcd59e423d9448108c1be37cac9d"}, + {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:58a0e345be4b18e6b8501d3b0aa540dad90caeed814c515e5206bb2ec26736fd"}, + {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c3761f62fcfccf0864cc4665b6e7c3f0c626f0380b41b8bd1ce322103fa3ef87"}, + {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c2b2f71c6ad6c2e4fc9ed9401080badd1469fa9889657ec3abea42a3d6b2e1ed"}, + {file = "rpds_py-0.21.0-cp39-none-win32.whl", hash = "sha256:b21747f79f360e790525e6f6438c7569ddbfb1b3197b9e65043f25c3c9b489d8"}, + {file = "rpds_py-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:0626238a43152918f9e72ede9a3b6ccc9e299adc8ade0d67c5e142d564c9a83d"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c"}, + {file = "rpds_py-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:031819f906bb146561af051c7cef4ba2003d28cff07efacef59da973ff7969ba"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b876f2bc27ab5954e2fd88890c071bd0ed18b9c50f6ec3de3c50a5ece612f7a6"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc5695c321e518d9f03b7ea6abb5ea3af4567766f9852ad1560f501b17588c7b"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b4de1da871b5c0fd5537b26a6fc6814c3cc05cabe0c941db6e9044ffbb12f04a"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:878f6fea96621fda5303a2867887686d7a198d9e0f8a40be100a63f5d60c88c9"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8eeec67590e94189f434c6d11c426892e396ae59e4801d17a93ac96b8c02a6c"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff2eba7f6c0cb523d7e9cff0903f2fe1feff8f0b2ceb6bd71c0e20a4dcee271"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a429b99337062877d7875e4ff1a51fe788424d522bd64a8c0a20ef3021fdb6ed"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d167e4dbbdac48bd58893c7e446684ad5d425b407f9336e04ab52e8b9194e2ed"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4eb2de8a147ffe0626bfdc275fc6563aa7bf4b6db59cf0d44f0ccd6ca625a24e"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e78868e98f34f34a88e23ee9ccaeeec460e4eaf6db16d51d7a9b883e5e785a5e"}, + {file = "rpds_py-0.21.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4991ca61656e3160cdaca4851151fd3f4a92e9eba5c7a530ab030d6aee96ec89"}, + {file = "rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db"}, ] [[package]] @@ -2883,23 +2914,23 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "74.1.0" +version = "75.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-74.1.0-py3-none-any.whl", hash = "sha256:cee604bd76cc092355a4e43ec17aee5369095974f41f088676724dc6bc2c9ef8"}, - {file = "setuptools-74.1.0.tar.gz", hash = "sha256:bea195a800f510ba3a2bc65645c88b7e016fe36709fefc58a880c4ae8a0138d7"}, + {file = "setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd"}, + {file = "setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12.*)", "pytest-mypy"] [[package]] name = "six" @@ -2987,13 +3018,13 @@ files = [ [[package]] name = "tinycss2" -version = "1.3.0" +version = "1.4.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" files = [ - {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, - {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, ] [package.dependencies] @@ -3025,13 +3056,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.5" +version = "4.67.0" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.67.0-py3-none-any.whl", hash = "sha256:0cd8af9d56911acab92182e88d763100d4788bdf421d251616040cc4d44863be"}, + {file = "tqdm-4.67.0.tar.gz", hash = "sha256:fe5a6f95e6fe0b9755e9469b77b9c3cf850048224ecaa8293d7d2d31f97d869a"}, ] [package.dependencies] @@ -3039,6 +3070,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +discord = ["requests"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] @@ -3060,24 +3092,24 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "types-python-dateutil" -version = "2.9.0.20240821" +version = "2.9.0.20241003" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" files = [ - {file = "types-python-dateutil-2.9.0.20240821.tar.gz", hash = "sha256:9649d1dcb6fef1046fb18bebe9ea2aa0028b160918518c34589a46045f6ebd98"}, - {file = "types_python_dateutil-2.9.0.20240821-py3-none-any.whl", hash = "sha256:f5889fcb4e63ed4aaa379b44f93c32593d50b9a94c9a60a0c854d8cc3511cd57"}, + {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, + {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, ] [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] @@ -3096,13 +3128,13 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -3124,25 +3156,24 @@ files = [ [[package]] name = "webargs" -version = "8.4.0" +version = "8.6.0" description = "Declarative parsing and validation of HTTP request objects, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, Pyramid, Falcon, and aiohttp." optional = false python-versions = ">=3.8" files = [ - {file = "webargs-8.4.0-py3-none-any.whl", hash = "sha256:22324305fbca6a2c4cce1235280e8b56372fb3211a8dac2ac8ed1948315a6f53"}, - {file = "webargs-8.4.0.tar.gz", hash = "sha256:ea99368214a4ce613924be99d71db58c269631e95eff4fa09b7354e52dc006a5"}, + {file = "webargs-8.6.0-py3-none-any.whl", hash = "sha256:83da4d7105643d0a50499b06d98a6ade1a330ce66d039eaa51f715172c704aba"}, + {file = "webargs-8.6.0.tar.gz", hash = "sha256:b8d098ab92bd74c659eca705afa31d681475f218cb15c1e57271fa2103c0547a"}, ] [package.dependencies] marshmallow = ">=3.0.0" -packaging = "*" +packaging = ">=17.0" [package.extras] -dev = ["Django (>=2.2.0)", "Flask (>=0.12.5)", "aiohttp (>=3.0.8)", "bottle (>=0.12.13)", "falcon (>=2.0.0)", "flake8 (==7.0.0)", "flake8-bugbear (==23.12.2)", "mypy (==1.8.0)", "pre-commit (>=2.4,<4.0)", "pyramid (>=1.9.1)", "pytest", "pytest-aiohttp (>=0.3.0)", "pytest-asyncio", "tornado (>=4.5.2)", "tox", "webtest (==3.0.0)", "webtest-aiohttp (==2.0.0)"] -docs = ["Django (>=2.2.0)", "Flask (>=0.12.5)", "Sphinx (==7.2.6)", "aiohttp (>=3.0.8)", "bottle (>=0.12.13)", "falcon (>=2.0.0)", "furo (==2023.9.10)", "pyramid (>=1.9.1)", "sphinx-issues (==3.0.1)", "tornado (>=4.5.2)"] +dev = ["pre-commit (>=3.5,<4.0)", "tox", "webargs[tests]"] +docs = ["Sphinx (==8.0.2)", "furo (==2024.8.6)", "sphinx-issues (==4.1.0)", "webargs[frameworks]"] frameworks = ["Django (>=2.2.0)", "Flask (>=0.12.5)", "aiohttp (>=3.0.8)", "bottle (>=0.12.13)", "falcon (>=2.0.0)", "pyramid (>=1.9.1)", "tornado (>=4.5.2)"] -lint = ["flake8 (==7.0.0)", "flake8-bugbear (==23.12.2)", "mypy (==1.8.0)", "pre-commit (>=2.4,<4.0)"] -tests = ["Django (>=2.2.0)", "Flask (>=0.12.5)", "aiohttp (>=3.0.8)", "bottle (>=0.12.13)", "falcon (>=2.0.0)", "pyramid (>=1.9.1)", "pytest", "pytest-aiohttp (>=0.3.0)", "pytest-asyncio", "tornado (>=4.5.2)", "webtest (==3.0.0)", "webtest-aiohttp (==2.0.0)"] +tests = ["pytest", "pytest-aiohttp (>=0.3.0)", "pytest-asyncio", "webargs[frameworks]", "webtest (==3.0.1)", "webtest-aiohttp (==2.0.0)"] [[package]] name = "webcolors" @@ -3188,13 +3219,13 @@ test = ["websockets"] [[package]] name = "werkzeug" -version = "3.0.4" +version = "3.1.2" description = "The comprehensive WSGI web application library." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "werkzeug-3.0.4-py3-none-any.whl", hash = "sha256:02c9eb92b7d6c06f31a782811505d2157837cea66aaede3e217c7c27c039476c"}, - {file = "werkzeug-3.0.4.tar.gz", hash = "sha256:34f2371506b250df4d4f84bfe7b0921e4762525762bbd936614909fe25cd7306"}, + {file = "werkzeug-3.1.2-py3-none-any.whl", hash = "sha256:4f7d1a5de312c810a8a2c6f0b47e9f6a7cffb7c8322def35e4d4d9841ff85597"}, + {file = "werkzeug-3.1.2.tar.gz", hash = "sha256:f471a4cd167233077e9d2a8190c3471c5bc520c636a9e3c1e9300c33bced03bc"}, ] [package.dependencies] @@ -3243,4 +3274,4 @@ updater = ["alteryx-open-src-update-checker (>=3.1.0)"] [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "09433ce7624fd6af995c85e9e980c57cd417491975e280f0a844931df35e5085" +content-hash = "51262612d869819aaf20a294578eedd495aaa0f2666c9aaa68166534dcf36169" diff --git a/pyproject.toml b/pyproject.toml index ae221d6..fa984e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,9 +20,6 @@ imbalanced-learn = "^0.12.3" featuretools = "^1.31.0" -[tool.poetry.group.dev.dependencies] -ipykernel = "^6.29.5" - [build-system] requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..793936b --- /dev/null +++ b/utils.py @@ -0,0 +1,82 @@ +from typing import Tuple + +import pandas as pd +from pandas import DataFrame +from sklearn.model_selection import train_test_split + + +def split_stratified_into_train_val_test( + df_input, + target_colname="z", + stratify_colname="y", + frac_train=0.6, + frac_val=0.15, + frac_test=0.25, + random_state=None, +) -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]: + """ + Splits a Pandas dataframe into three subsets (train, val, and test) + following fractional ratios provided by the user, where each subset is + stratified by the values in a specific column (that is, each subset has + the same relative frequency of the values in the column). It performs this + splitting by running train_test_split() twice. + + Parameters + ---------- + df_input : Pandas dataframe + Input dataframe to be split. + stratify_colname : str + The name of the column that will be used for stratification. Usually + this column would be for the label. + frac_train : float + frac_val : float + frac_test : float + The ratios with which the dataframe will be split into train, val, and + test data. The values should be expressed as float fractions and should + sum to 1.0. + random_state : int, None, or RandomStateInstance + Value to be passed to train_test_split(). + + Returns + ------- + df_train, df_val, df_test : + Dataframes containing the three splits. + """ + + if frac_train + frac_val + frac_test != 1.0: + raise ValueError( + "fractions %f, %f, %f do not add up to 1.0" + % (frac_train, frac_val, frac_test) + ) + + if stratify_colname not in df_input.columns: + raise ValueError("%s is not a column in the dataframe" % (stratify_colname)) + + if target_colname not in df_input.columns: + raise ValueError("%s is not a column in the dataframe" % (target_colname)) + + X = df_input # Contains all columns. + y = df_input[[target_colname]] # Dataframe of just the column on which to stratify. + z = df_input[[stratify_colname]] + + # Split original dataframe into train and temp dataframes. + df_train, df_temp, y_train, y_temp = train_test_split( + X, y, stratify=z, test_size=(1.0 - frac_train), random_state=random_state + ) + + if frac_val <= 0: + assert len(df_input) == len(df_train) + len(df_temp) + return df_train, pd.DataFrame(), df_temp, y_train, pd.DataFrame(), y_temp + + # Split the temp dataframe into val and test dataframes. + relative_frac_test = frac_test / (frac_val + frac_test) + df_val, df_test, y_val, y_test = train_test_split( + df_temp, + y_temp, + stratify=df_temp[[stratify_colname]], + test_size=relative_frac_test, + random_state=random_state, + ) + + assert len(df_input) == len(df_train) + len(df_val) + len(df_test) + return df_train, df_val, df_test, y_train, y_val, y_test