From c775b099941ee767d1623043ad4b223d1e38fa69 Mon Sep 17 00:00:00 2001 From: Kyle Carow Date: Tue, 5 May 2026 10:17:37 -0600 Subject: [PATCH 1/5] track five cycle changes --- Cargo.lock | 5 +- fastsim-core/Cargo.toml | 1 + .../resources/cycles/ftp_stabilized.csv | 869 ++++++++++++++++++ .../resources/cycles/ftp_transient.csv | 507 ++++++++++ fastsim-core/resources/cycles/sc03.csv | 602 ++++++++++++ fastsim-core/resources/cycles/us06.csv | 602 ++++++++++++ fastsim-core/resources/cycles/us06_city_1.csv | 131 +++ fastsim-core/resources/cycles/us06_city_2.csv | 107 +++ .../resources/cycles/us06_highway.csv | 366 ++++++++ ...rysler_Pacifica_Select_DFCO_StopStart.yaml | 232 +++++ ...2026_Chrysler_Pacifica_Select_Thermal.yaml | 247 +++++ ...Chrysler_Pacifica_Select_Thermal_DFCO.yaml | 344 +++++++ ...acifica_Select_Thermal_DFCO_StopStart.yaml | 366 ++++++++ fastsim-core/src/five_cycle/mod.rs | 742 +++++++++++++++ fastsim-core/src/lib.rs | 1 + fastsim-core/src/vehicle/vehicle_model.rs | 101 +- 16 files changed, 5179 insertions(+), 44 deletions(-) create mode 100755 fastsim-core/resources/cycles/ftp_stabilized.csv create mode 100755 fastsim-core/resources/cycles/ftp_transient.csv create mode 100755 fastsim-core/resources/cycles/sc03.csv create mode 100755 fastsim-core/resources/cycles/us06.csv create mode 100755 fastsim-core/resources/cycles/us06_city_1.csv create mode 100755 fastsim-core/resources/cycles/us06_city_2.csv create mode 100755 fastsim-core/resources/cycles/us06_highway.csv create mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml create mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml create mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml create mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml create mode 100644 fastsim-core/src/five_cycle/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 314f566c3..6ffeae3b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -590,6 +590,7 @@ dependencies = [ "include_dir", "itertools 0.12.1", "lazy_static", + "log", "ndarray", "ninterp", "nohash-hasher", @@ -1113,9 +1114,9 @@ checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" [[package]] name = "log" -version = "0.4.27" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "matrixmultiply" diff --git a/fastsim-core/Cargo.toml b/fastsim-core/Cargo.toml index 8053cde50..85bee91d6 100644 --- a/fastsim-core/Cargo.toml +++ b/fastsim-core/Cargo.toml @@ -59,6 +59,7 @@ num-traits = "0.2.19" [dev-dependencies] pretty_assertions = "1.4.1" +log = "0.4.29" [features] default = ["resources", "serde-default", "simdrivelabel"] diff --git a/fastsim-core/resources/cycles/ftp_stabilized.csv b/fastsim-core/resources/cycles/ftp_stabilized.csv new file mode 100755 index 000000000..a95bab0aa --- /dev/null +++ b/fastsim-core/resources/cycles/ftp_stabilized.csv @@ -0,0 +1,869 @@ +time_seconds,speed_meters_per_second,grade +0,0,0 +1,0,0 +2,0,0 +3,0,0 +4,0,0 +5,0,0 +6,0.536448,0 +7,1.56464,0 +8,2.45872,0 +9,2.90576,0 +10,3.79984,0 +11,4.291584,0 +12,4.69392,0 +13,5.319776,0 +14,6.25856,0 +15,7.15264,0 +16,7.912608,0 +17,8.49376,0 +18,8.985504,0 +19,9.38784,0 +20,9.83488,0 +21,10.28192,0 +22,10.639552,0 +23,10.95248,0 +24,11.131296,0 +25,11.176,0 +26,11.176,0 +27,11.176,0 +28,11.176,0 +29,11.176,0 +30,11.176,0 +31,11.444224,0 +32,11.533632,0 +33,11.62304,0 +34,11.444224,0 +35,11.265408,0 +36,11.176,0 +37,11.176,0 +38,11.176,0 +39,10.907776,0 +40,10.326624,0 +41,8.851392,0 +42,7.37616,0 +43,5.900928,0 +44,4.425696,0 +45,2.950464,0 +46,1.475232,0 +47,0,0 +48,0,0 +49,0,0 +50,0,0 +51,0,0 +52,0,0 +53,0,0 +54,0,0 +55,0,0 +56,0,0 +57,0,0 +58,0,0 +59,0,0 +60,0,0 +61,0,0 +62,0,0 +63,0,0 +64,1.475232,0 +65,2.950464,0 +66,4.425696,0 +67,5.81152,0 +68,6.526784,0 +69,7.15264,0 +70,7.59968,0 +71,7.59968,0 +72,7.59968,0 +73,7.8232,0 +74,7.912608,0 +75,7.912608,0 +76,7.8232,0 +77,7.59968,0 +78,7.554976,0 +79,7.420864,0 +80,7.59968,0 +81,7.644384,0 +82,7.59968,0 +83,7.420864,0 +84,7.37616,0 +85,7.37616,0 +86,7.420864,0 +87,7.59968,0 +88,7.867904,0 +89,8.27024,0 +90,8.583168,0 +91,9.030208,0 +92,9.38784,0 +93,9.432544,0 +94,9.477248,0 +95,9.656064,0 +96,9.83488,0 +97,10.013696,0 +98,10.0584,0 +99,10.0584,0 +100,10.0584,0 +101,10.147808,0 +102,10.594848,0 +103,11.220704,0 +104,11.62304,0 +105,11.84656,0 +106,12.07008,0 +107,11.667744,0 +108,10.192512,0 +109,8.71728,0 +110,7.242048,0 +111,5.766816,0 +112,4.291584,0 +113,2.816352,0 +114,1.34112,0 +115,0,0 +116,0,0 +117,0,0 +118,0,0 +119,0,0 +120,0,0 +121,0,0 +122,0,0 +123,0,0 +124,0,0 +125,0,0 +126,0,0 +127,0,0 +128,0,0 +129,0,0 +130,0,0 +131,0,0 +132,0,0 +133,0,0 +134,0,0 +135,0,0 +136,0,0 +137,0,0 +138,0,0 +139,0,0 +140,0,0 +141,0.89408,0 +142,2.01168,0 +143,3.486912,0 +144,4.559808,0 +145,5.588,0 +146,6.25856,0 +147,6.839712,0 +148,7.8232,0 +149,8.761984,0 +150,9.38784,0 +151,9.924288,0 +152,10.416032,0 +153,10.95248,0 +154,11.310112,0 +155,11.444224,0 +156,11.62304,0 +157,11.667744,0 +158,11.712448,0 +159,11.712448,0 +160,11.801856,0 +161,11.84656,0 +162,11.84656,0 +163,11.62304,0 +164,11.39952,0 +165,10.550144,0 +166,9.566656,0 +167,8.27024,0 +168,7.331456,0 +169,6.48208,0 +170,5.185664,0 +171,3.889248,0 +172,2.592832,0 +173,1.56464,0 +174,0.89408,0 +175,0,0 +176,0,0 +177,0,0 +178,0,0 +179,0,0 +180,0,0 +181,0,0 +182,0,0 +183,0,0 +184,0,0 +185,0,0 +186,0,0 +187,0,0 +188,0,0 +189,0.625856,0 +190,1.475232,0 +191,1.966976,0 +192,2.90576,0 +193,4.112768,0 +194,5.051552,0 +195,6.03504,0 +196,6.526784,0 +197,7.331456,0 +198,7.465568,0 +199,7.37616,0 +200,7.37616,0 +201,8.136128,0 +202,8.583168,0 +203,8.985504,0 +204,9.61136,0 +205,10.0584,0 +206,10.0584,0 +207,9.879584,0 +208,10.147808,0 +209,10.416032,0 +210,10.50544,0 +211,10.0584,0 +212,9.656064,0 +213,9.16432,0 +214,8.04672,0 +215,6.7056,0 +216,5.36448,0 +217,4.02336,0 +218,2.771648,0 +219,2.01168,0 +220,1.34112,0 +221,0.938784,0 +222,0.22352,0 +223,0.22352,0 +224,1.430528,0 +225,2.90576,0 +226,4.291584,0 +227,5.588,0 +228,6.25856,0 +229,7.15264,0 +230,8.04672,0 +231,8.761984,0 +232,9.61136,0 +233,10.326624,0 +234,10.95248,0 +235,11.39952,0 +236,11.84656,0 +237,12.114784,0 +238,12.338304,0 +239,12.472416,0 +240,12.651232,0 +241,12.785344,0 +242,12.785344,0 +243,12.651232,0 +244,12.606528,0 +245,12.51712,0 +246,12.2936,0 +247,11.980672,0 +248,11.39952,0 +249,10.50544,0 +250,9.61136,0 +251,8.49376,0 +252,7.37616,0 +253,6.660896,0 +254,5.588,0 +255,4.202176,0 +256,2.771648,0 +257,1.34112,0 +258,0.67056,0 +259,0.67056,0 +260,0.22352,0 +261,0,0 +262,1.34112,0 +263,2.816352,0 +264,4.291584,0 +265,5.766816,0 +266,7.063232,0 +267,7.8232,0 +268,8.225536,0 +269,8.71728,0 +270,9.253728,0 +271,9.83488,0 +272,10.371328,0 +273,11.176,0 +274,11.84656,0 +275,12.2936,0 +276,12.51712,0 +277,12.651232,0 +278,12.919456,0 +279,12.919456,0 +280,12.919456,0 +281,12.874752,0 +282,12.74064,0 +283,12.651232,0 +284,12.651232,0 +285,12.651232,0 +286,12.606528,0 +287,12.338304,0 +288,12.2936,0 +289,12.2936,0 +290,12.2936,0 +291,12.2936,0 +292,12.2936,0 +293,12.2936,0 +294,12.338304,0 +295,12.51712,0 +296,12.74064,0 +297,13.4112,0 +298,13.85824,0 +299,14.30528,0 +300,14.75232,0 +301,14.75232,0 +302,15.020544,0 +303,15.19936,0 +304,15.333472,0 +305,15.288768,0 +306,15.19936,0 +307,15.19936,0 +308,15.154656,0 +309,15.020544,0 +310,14.797024,0 +311,14.75232,0 +312,14.5288,0 +313,14.30528,0 +314,14.260576,0 +315,14.126464,0 +316,14.08176,0 +317,13.679424,0 +318,13.4112,0 +319,13.366496,0 +320,13.366496,0 +321,13.366496,0 +322,13.366496,0 +323,13.232384,0 +324,13.18768,0 +325,13.18768,0 +326,13.098272,0 +327,12.919456,0 +328,12.606528,0 +329,12.383008,0 +330,12.07008,0 +331,11.39952,0 +332,10.594848,0 +333,9.83488,0 +334,9.16432,0 +335,8.583168,0 +336,8.583168,0 +337,8.985504,0 +338,9.343136,0 +339,9.566656,0 +340,9.83488,0 +341,10.103104,0 +342,10.371328,0 +343,10.72896,0 +344,11.176,0 +345,11.62304,0 +346,11.891264,0 +347,11.891264,0 +348,11.980672,0 +349,12.07008,0 +350,12.159488,0 +351,12.427712,0 +352,12.561824,0 +353,12.874752,0 +354,12.919456,0 +355,12.96416,0 +356,13.008864,0 +357,12.96416,0 +358,12.561824,0 +359,12.2936,0 +360,12.07008,0 +361,11.533632,0 +362,11.176,0 +363,10.95248,0 +364,11.086592,0 +365,11.220704,0 +366,11.39952,0 +367,11.488928,0 +368,11.712448,0 +369,12.025376,0 +370,12.2936,0 +371,12.427712,0 +372,12.695936,0 +373,12.96416,0 +374,13.053568,0 +375,13.008864,0 +376,12.96416,0 +377,12.919456,0 +378,12.74064,0 +379,12.561824,0 +380,12.51712,0 +381,12.51712,0 +382,12.338304,0 +383,12.159488,0 +384,11.891264,0 +385,12.07008,0 +386,12.2936,0 +387,12.427712,0 +388,12.51712,0 +389,12.427712,0 +390,12.51712,0 +391,12.51712,0 +392,12.51712,0 +393,12.383008,0 +394,12.248896,0 +395,12.025376,0 +396,11.891264,0 +397,11.84656,0 +398,11.84656,0 +399,11.84656,0 +400,11.757152,0 +401,11.712448,0 +402,11.712448,0 +403,11.578336,0 +404,11.444224,0 +405,11.444224,0 +406,11.578336,0 +407,11.533632,0 +408,11.39952,0 +409,10.997184,0 +410,10.50544,0 +411,9.924288,0 +412,9.656064,0 +413,9.656064,0 +414,9.700768,0 +415,10.103104,0 +416,10.460736,0 +417,10.72896,0 +418,10.818368,0 +419,10.907776,0 +420,11.131296,0 +421,11.220704,0 +422,11.265408,0 +423,11.310112,0 +424,11.39952,0 +425,11.265408,0 +426,11.176,0 +427,11.176,0 +428,11.176,0 +429,11.041888,0 +430,10.95248,0 +431,10.863072,0 +432,10.863072,0 +433,10.95248,0 +434,11.176,0 +435,11.176,0 +436,10.997184,0 +437,10.997184,0 +438,10.773664,0 +439,10.95248,0 +440,11.220704,0 +441,11.444224,0 +442,11.220704,0 +443,10.72896,0 +444,9.83488,0 +445,8.985504,0 +446,7.554976,0 +447,6.079744,0 +448,4.604512,0 +449,3.12928,0 +450,1.654048,0 +451,0.178816,0 +452,0,0 +453,0,0 +454,0,0 +455,0.89408,0 +456,2.369312,0 +457,3.844544,0 +458,5.319776,0 +459,6.795008,0 +460,7.8232,0 +461,8.314944,0 +462,8.9408,0 +463,9.432544,0 +464,9.83488,0 +465,10.28192,0 +466,10.95248,0 +467,11.757152,0 +468,12.2936,0 +469,12.561824,0 +470,12.695936,0 +471,12.74064,0 +472,12.74064,0 +473,12.74064,0 +474,12.383008,0 +475,12.2936,0 +476,12.159488,0 +477,11.980672,0 +478,11.84656,0 +479,11.62304,0 +480,11.488928,0 +481,11.265408,0 +482,10.72896,0 +483,9.83488,0 +484,9.61136,0 +485,9.61136,0 +486,9.745472,0 +487,10.0584,0 +488,10.28192,0 +489,10.192512,0 +490,10.192512,0 +491,10.28192,0 +492,10.147808,0 +493,10.147808,0 +494,10.147808,0 +495,10.50544,0 +496,10.72896,0 +497,10.997184,0 +498,11.086592,0 +499,11.220704,0 +500,11.39952,0 +501,11.444224,0 +502,11.39952,0 +503,11.176,0 +504,10.773664,0 +505,10.594848,0 +506,10.371328,0 +507,10.237216,0 +508,10.0584,0 +509,9.83488,0 +510,9.656064,0 +511,9.16432,0 +512,7.8232,0 +513,6.347968,0 +514,4.872736,0 +515,3.397504,0 +516,1.922272,0 +517,0.44704,0 +518,0,0 +519,0,0 +520,0,0 +521,0,0 +522,0,0 +523,0,0 +524,0,0 +525,0,0 +526,0,0 +527,0,0 +528,0,0 +529,0,0 +530,0,0 +531,0,0 +532,0,0 +533,0,0 +534,0,0 +535,0,0 +536,0,0 +537,0,0 +538,0,0 +539,0,0 +540,0,0 +541,0,0 +542,0,0 +543,0,0 +544,0,0 +545,0,0 +546,0,0 +547,0,0 +548,0.536448,0 +549,1.78816,0 +550,3.263392,0 +551,4.738624,0 +552,6.213856,0 +553,7.59968,0 +554,8.27024,0 +555,8.9408,0 +556,9.745472,0 +557,10.28192,0 +558,10.72896,0 +559,11.086592,0 +560,11.444224,0 +561,11.84656,0 +562,11.980672,0 +563,12.248896,0 +564,12.472416,0 +565,12.651232,0 +566,12.51712,0 +567,12.2936,0 +568,12.07008,0 +569,12.07008,0 +570,11.757152,0 +571,10.95248,0 +572,10.0584,0 +573,9.61136,0 +574,9.209024,0 +575,8.04672,0 +576,6.7056,0 +577,5.498592,0 +578,4.962144,0 +579,4.738624,0 +580,4.4704,0 +581,4.24688,0 +582,4.068064,0 +583,3.889248,0 +584,3.844544,0 +585,3.933952,0 +586,4.02336,0 +587,3.889248,0 +588,3.844544,0 +589,3.57632,0 +590,3.12928,0 +591,2.2352,0 +592,1.877568,0 +593,1.162304,0 +594,0.44704,0 +595,0,0 +596,0.044704,0 +597,0.268224,0 +598,0.715264,0 +599,1.609344,0 +600,3.084576,0 +601,4.4704,0 +602,5.722112,0 +603,6.25856,0 +604,6.48208,0 +605,7.15264,0 +606,8.091424,0 +607,8.9408,0 +608,9.38784,0 +609,9.477248,0 +610,9.521952,0 +611,9.566656,0 +612,9.700768,0 +613,10.0584,0 +614,10.28192,0 +615,10.639552,0 +616,10.95248,0 +617,11.176,0 +618,11.131296,0 +619,11.086592,0 +620,11.176,0 +621,11.354816,0 +622,11.533632,0 +623,11.62304,0 +624,11.801856,0 +625,11.891264,0 +626,12.025376,0 +627,12.07008,0 +628,12.07008,0 +629,12.07008,0 +630,12.025376,0 +631,11.980672,0 +632,11.980672,0 +633,11.84656,0 +634,11.801856,0 +635,11.62304,0 +636,11.39952,0 +637,10.997184,0 +638,10.50544,0 +639,9.61136,0 +640,8.9408,0 +641,7.8232,0 +642,7.15264,0 +643,6.25856,0 +644,4.783328,0 +645,3.308096,0 +646,1.832864,0 +647,0.357632,0 +648,0,0 +649,0,0 +650,0,0 +651,0,0 +652,0,0 +653,0,0 +654,0,0 +655,0,0 +656,0,0 +657,0,0 +658,0,0 +659,0,0 +660,0,0 +661,0,0 +662,0,0 +663,0,0 +664,0.938784,0 +665,2.414016,0 +666,3.889248,0 +667,5.36448,0 +668,6.839712,0 +669,8.314944,0 +670,9.432544,0 +671,10.28192,0 +672,10.50544,0 +673,10.28192,0 +674,10.0584,0 +675,8.9408,0 +676,7.465568,0 +677,5.990336,0 +678,4.515104,0 +679,3.039872,0 +680,1.56464,0 +681,0.089408,0 +682,0,0 +683,0,0 +684,0,0 +685,0,0 +686,0,0 +687,0,0 +688,0,0 +689,0,0 +690,0,0 +691,0,0 +692,0.089408,0 +693,0.67056,0 +694,1.56464,0 +695,2.90576,0 +696,4.380992,0 +697,5.36448,0 +698,5.766816,0 +699,5.81152,0 +700,5.632704,0 +701,5.722112,0 +702,5.856224,0 +703,5.856224,0 +704,6.25856,0 +705,6.92912,0 +706,7.59968,0 +707,8.314944,0 +708,8.806688,0 +709,9.38784,0 +710,9.61136,0 +711,9.745472,0 +712,9.745472,0 +713,9.61136,0 +714,9.477248,0 +715,9.61136,0 +716,9.745472,0 +717,9.83488,0 +718,9.790176,0 +719,9.700768,0 +720,9.61136,0 +721,9.61136,0 +722,9.566656,0 +723,8.985504,0 +724,8.71728,0 +725,8.583168,0 +726,8.761984,0 +727,8.851392,0 +728,8.9408,0 +729,8.71728,0 +730,7.8232,0 +731,6.92912,0 +732,5.81152,0 +733,4.4704,0 +734,3.57632,0 +735,2.68224,0 +736,1.78816,0 +737,1.1176,0 +738,0.312928,0 +739,0,0 +740,0,0 +741,0,0 +742,0,0 +743,0,0 +744,0,0 +745,0,0 +746,0,0 +747,0.44704,0 +748,0.44704,0 +749,0.44704,0 +750,0.44704,0 +751,0.44704,0 +752,0.715264,0 +753,1.34112,0 +754,1.78816,0 +755,2.2352,0 +756,2.816352,0 +757,3.57632,0 +758,4.4704,0 +759,4.69392,0 +760,4.24688,0 +761,3.79984,0 +762,3.397504,0 +763,3.933952,0 +764,4.91744,0 +765,6.25856,0 +766,7.59968,0 +767,8.71728,0 +768,9.38784,0 +769,9.745472,0 +770,9.924288,0 +771,10.28192,0 +772,10.550144,0 +773,10.773664,0 +774,10.95248,0 +775,10.95248,0 +776,10.72896,0 +777,10.50544,0 +778,10.50544,0 +779,10.50544,0 +780,10.50544,0 +781,10.50544,0 +782,10.50544,0 +783,10.72896,0 +784,10.773664,0 +785,10.95248,0 +786,11.041888,0 +787,11.176,0 +788,11.354816,0 +789,11.444224,0 +790,11.488928,0 +791,11.62304,0 +792,11.712448,0 +793,12.07008,0 +794,12.427712,0 +795,12.651232,0 +796,12.96416,0 +797,13.008864,0 +798,12.96416,0 +799,12.51712,0 +800,11.041888,0 +801,9.566656,0 +802,8.091424,0 +803,6.616192,0 +804,5.14096,0 +805,3.665728,0 +806,2.190496,0 +807,0.715264,0 +808,0,0 +809,0,0 +810,0,0 +811,0,0 +812,0,0 +813,0,0 +814,0,0 +815,0,0 +816,0,0 +817,0,0 +818,0,0 +819,0,0 +820,0,0 +821,0,0 +822,0,0 +823,0,0 +824,0,0 +825,0,0 +826,0,0 +827,0,0 +828,0,0 +829,0,0 +830,0,0 +831,0,0 +832,0,0 +833,0.67056,0 +834,2.145792,0 +835,3.621024,0 +836,5.096256,0 +837,5.900928,0 +838,6.750304,0 +839,7.510272,0 +840,8.180832,0 +841,8.71728,0 +842,9.074912,0 +843,9.521952,0 +844,9.790176,0 +845,9.879584,0 +846,10.013696,0 +847,9.83488,0 +848,9.656064,0 +849,9.432544,0 +850,9.16432,0 +851,8.9408,0 +852,8.761984,0 +853,8.27024,0 +854,7.8232,0 +855,7.37616,0 +856,6.92912,0 +857,6.25856,0 +858,4.91744,0 +859,3.57632,0 +860,2.324608,0 +861,1.1176,0 +862,0,0 +863,0,0 +864,0,0 +865,0,0 +866,0,0 +867,0,0 diff --git a/fastsim-core/resources/cycles/ftp_transient.csv b/fastsim-core/resources/cycles/ftp_transient.csv new file mode 100755 index 000000000..d7424b0ca --- /dev/null +++ b/fastsim-core/resources/cycles/ftp_transient.csv @@ -0,0 +1,507 @@ +time_seconds,speed_meters_per_second,grade +0,0,0 +1,0,0 +2,0,0 +3,0,0 +4,0,0 +5,0,0 +6,0,0 +7,0,0 +8,0,0 +9,0,0 +10,0,0 +11,0,0 +12,0,0 +13,0,0 +14,0,0 +15,0,0 +16,0,0 +17,0,0 +18,0,0 +19,0,0 +20,0,0 +21,1.341141759,0 +22,2.637578792,0 +23,3.844606375,0 +24,5.141043408,0 +25,6.392775716,0 +26,7.555098574,0 +27,7.733917475,0 +28,8.091555277,0 +29,9.253878135,0 +30,9.700925388,0 +31,10.01385846,0 +32,10.05856319,0 +33,9.879744289,0 +34,9.611515937,0 +35,9.343287585,0 +36,9.119763959,0 +37,8.851535607,0 +38,7.599803299,0 +39,6.661004068,0 +40,6.661004068,0 +41,6.795118244,0 +42,6.92923242,0 +43,7.152756046,0 +44,7.644508024,0 +45,8.53860253,0 +46,9.432697036,0 +47,10.14797264,0 +48,10.23738209,0 +49,10.14797264,0 +50,10.10326792,0 +51,9.522106487,0 +52,8.493897805,0 +53,7.644508024,0 +54,7.063346596,0 +55,7.063346596,0 +56,7.912736376,0 +57,8.851535607,0 +58,9.656220663,0 +59,10.37149627,0 +60,10.81854352,0 +61,10.99736242,0 +62,11.1314766,0 +63,11.17618132,0 +64,10.99736242,0 +65,10.9526577,0 +66,11.04206715,0 +67,11.08677187,0 +68,11.04206715,0 +69,10.99736242,0 +70,10.99736242,0 +71,11.22088605,0 +72,11.44440967,0 +73,11.4891144,0 +74,11.35500022,0 +75,11.1314766,0 +76,11.17618132,0 +77,11.35500022,0 +78,11.62322858,0 +79,11.62322858,0 +80,11.4891144,0 +81,11.6679333,0 +82,11.93616165,0 +83,12.29379945,0 +84,12.78555143,0 +85,13.09848451,0 +86,13.32200814,0 +87,13.45612231,0 +88,13.59023649,0 +89,13.72435066,0 +90,13.72435066,0 +91,13.63494121,0 +92,13.59023649,0 +93,13.54553176,0 +94,13.59023649,0 +95,13.76905539,0 +96,13.59023649,0 +97,13.36671286,0 +98,13.18789396,0 +99,13.32200814,0 +100,13.54553176,0 +101,13.72435066,0 +102,13.81376011,0 +103,13.85846484,0 +104,13.81376011,0 +105,13.59023649,0 +106,13.32200814,0 +107,13.36671286,0 +108,13.50082704,0 +109,13.72435066,0 +110,13.94787429,0 +111,14.21610264,0 +112,14.39492154,0 +113,14.48433099,0 +114,14.39492154,0 +115,14.17139792,0 +116,12.78555143,0 +117,11.3102955,0 +118,9.835039564,0 +119,8.359783629,0 +120,6.884527695,0 +121,5.40927176,0 +122,3.934015825,0 +123,2.458759891,0 +124,0.983503956,0 +125,0,0 +126,0,0 +127,0,0 +128,0,0 +129,0,0 +130,0,0 +131,0,0 +132,0,0 +133,0,0 +134,0,0 +135,0,0 +136,0,0 +137,0,0 +138,0,0 +139,0,0 +140,0,0 +141,0,0 +142,0,0 +143,0,0 +144,0,0 +145,0,0 +146,0,0 +147,0,0 +148,0,0 +149,0,0 +150,0,0 +151,0,0 +152,0,0 +153,0,0 +154,0,0 +155,0,0 +156,0,0 +157,0,0 +158,0,0 +159,0,0 +160,0,0 +161,0,0 +162,0,0 +163,0,0 +164,1.475255935,0 +165,2.950511869,0 +166,4.425767804,0 +167,5.901023738,0 +168,7.376279673,0 +169,8.851535607,0 +170,9.924449014,0 +171,10.86324825,0 +172,11.53381912,0 +173,11.80204748,0 +174,11.4891144,0 +175,11.22088605,0 +176,11.04206715,0 +177,11.17618132,0 +178,11.26559077,0 +179,11.35500022,0 +180,11.53381912,0 +181,12.15968528,0 +182,11.8467522,0 +183,10.72913407,0 +184,10.14797264,0 +185,8.672716706,0 +186,7.912736376,0 +187,7.68921275,0 +188,8.091555277,0 +189,8.315078904,0 +190,8.940945058,0 +191,9.924449014,0 +192,10.9526577,0 +193,12.20439,0 +194,13.63494121,0 +195,14.97608297,0 +196,16.18311055,0 +197,16.67486253,0 +198,17.56895704,0 +199,18.10541374,0 +200,18.82068935,0 +201,19.4465555,0 +202,20.16183111,0 +203,20.56417363,0 +204,20.92181144,0 +205,21.23474451,0 +206,21.23474451,0 +207,21.14533506,0 +208,21.10063034,0 +209,21.01122089,0 +210,21.01122089,0 +211,21.01122089,0 +212,21.01122089,0 +213,21.01122089,0 +214,21.10063034,0 +215,21.19003979,0 +216,21.41356341,0 +217,21.68179177,0 +218,21.95002012,0 +219,22.12883902,0 +220,22.35236264,0 +221,22.620591,0 +222,22.7994099,0 +223,23.02293352,0 +224,23.3358666,0 +225,23.78291385,0 +226,24.18525638,0 +227,24.40878001,0 +228,24.54289418,0 +229,24.58759891,0 +230,24.54289418,0 +231,24.40878001,0 +232,24.40878001,0 +233,24.49818946,0 +234,24.63230363,0 +235,24.81112254,0 +236,24.90053199,0 +237,25.07935089,0 +238,25.16876034,0 +239,25.30287451,0 +240,25.34757924,0 +241,25.34757924,0 +242,25.25816979,0 +243,25.25816979,0 +244,25.25816979,0 +245,25.25816979,0 +246,25.25816979,0 +247,25.25816979,0 +248,25.21346506,0 +249,25.07935089,0 +250,24.94523671,0 +251,24.63230363,0 +252,24.40878001,0 +253,24.22996111,0 +254,24.14055166,0 +255,24.00643748,0 +256,23.96173276,0 +257,24.09584693,0 +258,24.14055166,0 +259,24.18525638,0 +260,24.18525638,0 +261,24.05114221,0 +262,23.8723233,0 +263,23.6935044,0 +264,23.5146855,0 +265,23.29116188,0 +266,23.42527605,0 +267,23.24645715,0 +268,23.20175243,0 +269,23.11234297,0 +270,23.02293352,0 +271,23.06763825,0 +272,23.1570477,0 +273,23.29116188,0 +274,23.46998078,0 +275,23.6935044,0 +276,23.91702803,0 +277,24.14055166,0 +278,24.54289418,0 +279,24.76641781,0 +280,24.85582726,0 +281,25.03464616,0 +282,25.03464616,0 +283,24.94523671,0 +284,24.67700836,0 +285,24.36407528,0 +286,23.96173276,0 +287,23.46998078,0 +288,23.02293352,0 +289,23.02293352,0 +290,23.02293352,0 +291,22.84411462,0 +292,22.39706737,0 +293,22.35236264,0 +294,22.39706737,0 +295,22.35236264,0 +296,22.17354374,0 +297,22.12883902,0 +298,22.12883902,0 +299,22.12883902,0 +300,21.95002012,0 +301,21.72649649,0 +302,21.50297286,0 +303,21.10063034,0 +304,20.60887836,0 +305,20.11712638,0 +306,19.58066968,0 +307,19.04421297,0 +308,18.552461,0 +309,18.01600429,0 +310,17.21131924,0 +311,16.54074836,0 +312,15.7360633,0 +313,15.11019715,0 +314,14.52903572,0 +315,14.08198847,0 +316,13.67964594,0 +317,13.63494121,0 +318,13.41141759,0 +319,12.96437033,0 +320,12.29379945,0 +321,11.08677187,0 +322,9.611515937,0 +323,8.985649783,0 +324,8.53860253,0 +325,8.270374179,0 +326,7.599803299,0 +327,6.92923242,0 +328,5.588090661,0 +329,4.828110331,0 +330,3.576378023,0 +331,2.101122089,0 +332,0.625866154,0 +333,0,0 +334,0,0 +335,0,0 +336,0,0 +337,0,0 +338,0,0 +339,0,0 +340,0,0 +341,0,0 +342,0,0 +343,0,0 +344,0,0 +345,0,0 +346,0,0 +347,0.447047253,0 +348,1.922303187,0 +349,3.397559122,0 +350,4.872815057,0 +351,6.348070991,0 +352,7.733917475,0 +353,8.940945058,0 +354,10.05856319,0 +355,10.59501989,0 +356,11.26559077,0 +357,11.89145693,0 +358,12.56202781,0 +359,13.41141759,0 +360,13.76905539,0 +361,14.12669319,0 +362,14.35021682,0 +363,14.66314989,0 +364,15.0207877,0 +365,15.42313022,0 +366,15.46783495,0 +367,15.60194913,0 +368,15.5572444,0 +369,15.42313022,0 +370,15.51253968,0 +371,15.87017748,0 +372,16.0937011,0 +373,16.0937011,0 +374,16.0937011,0 +375,16.0937011,0 +376,16.0937011,0 +377,16.0937011,0 +378,16.13840583,0 +379,16.27252001,0 +380,16.31722473,0 +381,16.27252001,0 +382,16.0937011,0 +383,15.69135858,0 +384,15.24431132,0 +385,14.97608297,0 +386,14.03728374,0 +387,12.96437033,0 +388,11.4891144,0 +389,10.28208682,0 +390,9.075059234,0 +391,7.823326926,0 +392,6.482185167,0 +393,5.364567035,0 +394,3.8893111,0 +395,2.414055166,0 +396,0.938799231,0 +397,0,0 +398,0,0 +399,0,0 +400,0,0 +401,0,0 +402,0,0 +403,1.162322858,0 +404,2.637578792,0 +405,4.112834727,0 +406,5.588090661,0 +407,7.063346596,0 +408,8.53860253,0 +409,10.01385846,0 +410,11.17618132,0 +411,11.44440967,0 +412,12.29379945,0 +413,12.96437033,0 +414,13.41141759,0 +415,13.45612231,0 +416,13.41141759,0 +417,13.27730341,0 +418,13.09848451,0 +419,12.87496088,0 +420,12.51732308,0 +421,11.17618132,0 +422,9.700925388,0 +423,8.225669453,0 +424,6.750413519,0 +425,5.275157584,0 +426,3.79990165,0 +427,2.324645715,0 +428,0.84938978,0 +429,0,0 +430,0,0 +431,0,0 +432,0,0 +433,0,0 +434,0,0 +435,0,0 +436,0,0 +437,0,0 +438,0,0 +439,0,0 +440,0,0 +441,0,0 +442,0,0 +443,0,0 +444,0,0 +445,0,0 +446,0,0 +447,0,0 +448,1.475255935,0 +449,2.950511869,0 +450,4.425767804,0 +451,5.901023738,0 +452,7.376279673,0 +453,8.851535607,0 +454,10.32679154,0 +455,11.80204748,0 +456,12.42791363,0 +457,13.00907506,0 +458,14.08198847,0 +459,14.75255935,0 +460,15.0207877,0 +461,15.5572444,0 +462,15.69135858,0 +463,15.9148822,0 +464,16.13840583,0 +465,16.0937011,0 +466,16.13840583,0 +467,16.18311055,0 +468,16.0937011,0 +469,15.95958693,0 +470,16.0937011,0 +471,16.0937011,0 +472,15.9148822,0 +473,15.87017748,0 +474,15.82547275,0 +475,15.7360633,0 +476,15.7360633,0 +477,15.7360633,0 +478,15.7360633,0 +479,15.7360633,0 +480,15.7360633,0 +481,15.64665385,0 +482,15.69135858,0 +483,15.7360633,0 +484,15.87017748,0 +485,15.7360633,0 +486,15.64665385,0 +487,15.64665385,0 +488,15.64665385,0 +489,15.5572444,0 +490,15.46783495,0 +491,15.42313022,0 +492,14.97608297,0 +493,14.30551209,0 +494,13.45612231,0 +495,12.51732308,0 +496,11.39970495,0 +497,10.05856319,0 +498,8.851535607,0 +499,7.376279673,0 +500,5.901023738,0 +501,4.604586705,0 +502,3.218740221,0 +503,1.788189012,0 +504,0.447047253,0 +505,0,0 diff --git a/fastsim-core/resources/cycles/sc03.csv b/fastsim-core/resources/cycles/sc03.csv new file mode 100755 index 000000000..1dba1fe53 --- /dev/null +++ b/fastsim-core/resources/cycles/sc03.csv @@ -0,0 +1,602 @@ +time_seconds,speed_meters_per_second,grade,temp_amb_air_kelvin,pwr_solar_load_watts +0,0,0,308.15,0 +1,0,0,308.15,0 +2,0,0,308.15,0 +3,0,0,308.15,0 +4,0,0,308.15,0 +5,0,0,308.15,0 +6,0,0,308.15,0 +7,0,0,308.15,0 +8,0,0,308.15,0 +9,0,0,308.15,0 +10,0,0,308.15,0 +11,0,0,308.15,0 +12,0,0,308.15,0 +13,0,0,308.15,0 +14,0,0,308.15,0 +15,0,0,308.15,0 +16,0,0,308.15,0 +17,0,0,308.15,0 +18,0,0,308.15,0 +19,0.402336,0,308.15,0 +20,1.34112,0,308.15,0 +21,1.296416,0,308.15,0 +22,1.475232,0,308.15,0 +23,1.56464,0,308.15,0 +24,0.983488,0,308.15,0 +25,0.625856,0,308.15,0 +26,0,0,308.15,0 +27,0,0,308.15,0 +28,0,0,308.15,0 +29,0,0,308.15,0 +30,0,0,308.15,0 +31,0,0,308.15,0 +32,0,0,308.15,0 +33,0.178816,0,308.15,0 +34,1.475232,0,308.15,0 +35,2.68224,0,308.15,0 +36,3.57632,0,308.15,0 +37,3.889248,0,308.15,0 +38,4.4704,0,308.15,0 +39,5.543296,0,308.15,0 +40,6.169152,0,308.15,0 +41,6.571488,0,308.15,0 +42,6.616192,0,308.15,0 +43,7.420864,0,308.15,0 +44,8.180832,0,308.15,0 +45,8.49376,0,308.15,0 +46,8.583168,0,308.15,0 +47,8.627872,0,308.15,0 +48,8.806688,0,308.15,0 +49,9.16432,0,308.15,0 +50,9.38784,0,308.15,0 +51,9.477248,0,308.15,0 +52,9.656064,0,308.15,0 +53,9.924288,0,308.15,0 +54,10.639552,0,308.15,0 +55,10.997184,0,308.15,0 +56,10.863072,0,308.15,0 +57,10.416032,0,308.15,0 +58,10.147808,0,308.15,0 +59,9.566656,0,308.15,0 +60,9.119616,0,308.15,0 +61,8.71728,0,308.15,0 +62,8.002016,0,308.15,0 +63,6.973824,0,308.15,0 +64,5.230368,0,308.15,0 +65,3.486912,0,308.15,0 +66,3.218688,0,308.15,0 +67,4.157472,0,308.15,0 +68,5.766816,0,308.15,0 +69,7.063232,0,308.15,0 +70,7.242048,0,308.15,0 +71,7.554976,0,308.15,0 +72,8.180832,0,308.15,0 +73,9.074912,0,308.15,0 +74,9.656064,0,308.15,0 +75,10.013696,0,308.15,0 +76,10.28192,0,308.15,0 +77,10.192512,0,308.15,0 +78,9.879584,0,308.15,0 +79,9.477248,0,308.15,0 +80,8.71728,0,308.15,0 +81,7.644384,0,308.15,0 +82,6.303264,0,308.15,0 +83,4.69392,0,308.15,0 +84,3.397504,0,308.15,0 +85,3.3528,0,308.15,0 +86,4.4704,0,308.15,0 +87,5.856224,0,308.15,0 +88,6.303264,0,308.15,0 +89,7.331456,0,308.15,0 +90,8.761984,0,308.15,0 +91,10.013696,0,308.15,0 +92,11.041888,0,308.15,0 +93,11.667744,0,308.15,0 +94,11.533632,0,308.15,0 +95,11.891264,0,308.15,0 +96,12.427712,0,308.15,0 +97,12.74064,0,308.15,0 +98,12.919456,0,308.15,0 +99,13.098272,0,308.15,0 +100,13.18768,0,308.15,0 +101,13.142976,0,308.15,0 +102,13.142976,0,308.15,0 +103,13.321792,0,308.15,0 +104,13.545312,0,308.15,0 +105,13.679424,0,308.15,0 +106,13.63472,0,308.15,0 +107,13.63472,0,308.15,0 +108,13.455904,0,308.15,0 +109,13.098272,0,308.15,0 +110,12.695936,0,308.15,0 +111,12.338304,0,308.15,0 +112,11.980672,0,308.15,0 +113,11.39952,0,308.15,0 +114,10.594848,0,308.15,0 +115,9.700768,0,308.15,0 +116,8.627872,0,308.15,0 +117,7.465568,0,308.15,0 +118,6.437376,0,308.15,0 +119,5.14096,0,308.15,0 +120,3.531616,0,308.15,0 +121,2.950464,0,308.15,0 +122,4.202176,0,308.15,0 +123,5.543296,0,308.15,0 +124,6.616192,0,308.15,0 +125,7.197344,0,308.15,0 +126,8.627872,0,308.15,0 +127,10.103104,0,308.15,0 +128,11.39952,0,308.15,0 +129,11.801856,0,308.15,0 +130,11.935968,0,308.15,0 +131,12.427712,0,308.15,0 +132,13.142976,0,308.15,0 +133,13.902944,0,308.15,0 +134,14.5288,0,308.15,0 +135,15.020544,0,308.15,0 +136,15.467584,0,308.15,0 +137,15.825216,0,308.15,0 +138,16.138144,0,308.15,0 +139,16.54048,0,308.15,0 +140,16.853408,0,308.15,0 +141,17.032224,0,308.15,0 +142,17.121632,0,308.15,0 +143,17.032224,0,308.15,0 +144,16.898112,0,308.15,0 +145,16.361664,0,308.15,0 +146,15.556992,0,308.15,0 +147,14.841728,0,308.15,0 +148,14.484096,0,308.15,0 +149,14.439392,0,308.15,0 +150,14.439392,0,308.15,0 +151,14.484096,0,308.15,0 +152,14.484096,0,308.15,0 +153,14.484096,0,308.15,0 +154,14.5288,0,308.15,0 +155,14.886432,0,308.15,0 +156,15.378176,0,308.15,0 +157,15.86992,0,308.15,0 +158,16.361664,0,308.15,0 +159,16.719296,0,308.15,0 +160,16.98752,0,308.15,0 +161,17.166336,0,308.15,0 +162,17.21104,0,308.15,0 +163,17.255744,0,308.15,0 +164,17.166336,0,308.15,0 +165,17.076928,0,308.15,0 +166,16.764,0,308.15,0 +167,16.495776,0,308.15,0 +168,16.227552,0,308.15,0 +169,15.556992,0,308.15,0 +170,14.75232,0,308.15,0 +171,14.037056,0,308.15,0 +172,13.724128,0,308.15,0 +173,13.545312,0,308.15,0 +174,13.4112,0,308.15,0 +175,13.098272,0,308.15,0 +176,12.248896,0,308.15,0 +177,11.220704,0,308.15,0 +178,9.745472,0,308.15,0 +179,7.689088,0,308.15,0 +180,5.588,0,308.15,0 +181,3.621024,0,308.15,0 +182,2.01168,0,308.15,0 +183,0.89408,0,308.15,0 +184,0.44704,0,308.15,0 +185,0.268224,0,308.15,0 +186,0,0,308.15,0 +187,0,0,308.15,0 +188,0,0,308.15,0 +189,0,0,308.15,0 +190,0,0,308.15,0 +191,0,0,308.15,0 +192,0,0,308.15,0 +193,0,0,308.15,0 +194,0,0,308.15,0 +195,0,0,308.15,0 +196,0,0,308.15,0 +197,0,0,308.15,0 +198,0,0,308.15,0 +199,0,0,308.15,0 +200,0,0,308.15,0 +201,0,0,308.15,0 +202,0,0,308.15,0 +203,0,0,308.15,0 +204,0,0,308.15,0 +205,0.44704,0,308.15,0 +206,0.22352,0,308.15,0 +207,1.162304,0,308.15,0 +208,3.442208,0,308.15,0 +209,5.498592,0,308.15,0 +210,7.063232,0,308.15,0 +211,7.733792,0,308.15,0 +212,8.672576,0,308.15,0 +213,10.416032,0,308.15,0 +214,12.159488,0,308.15,0 +215,13.85824,0,308.15,0 +216,15.020544,0,308.15,0 +217,15.288768,0,308.15,0 +218,16.004032,0,308.15,0 +219,16.674592,0,308.15,0 +220,17.121632,0,308.15,0 +221,17.523968,0,308.15,0 +222,17.926304,0,308.15,0 +223,18.283936,0,308.15,0 +224,18.32864,0,308.15,0 +225,18.060416,0,308.15,0 +226,17.747488,0,308.15,0 +227,17.479264,0,308.15,0 +228,17.032224,0,308.15,0 +229,16.406368,0,308.15,0 +230,16.048736,0,308.15,0 +231,16.048736,0,308.15,0 +232,15.959328,0,308.15,0 +233,15.601696,0,308.15,0 +234,15.154656,0,308.15,0 +235,14.573504,0,308.15,0 +236,14.260576,0,308.15,0 +237,13.902944,0,308.15,0 +238,13.679424,0,308.15,0 +239,13.545312,0,308.15,0 +240,13.455904,0,308.15,0 +241,13.366496,0,308.15,0 +242,13.321792,0,308.15,0 +243,13.321792,0,308.15,0 +244,13.321792,0,308.15,0 +245,13.321792,0,308.15,0 +246,13.277088,0,308.15,0 +247,13.277088,0,308.15,0 +248,13.232384,0,308.15,0 +249,12.695936,0,308.15,0 +250,11.533632,0,308.15,0 +251,10.192512,0,308.15,0 +252,8.49376,0,308.15,0 +253,6.25856,0,308.15,0 +254,3.844544,0,308.15,0 +255,1.832864,0,308.15,0 +256,0.581152,0,308.15,0 +257,0,0,308.15,0 +258,0,0,308.15,0 +259,0,0,308.15,0 +260,0,0,308.15,0 +261,0,0,308.15,0 +262,0,0,308.15,0 +263,0,0,308.15,0 +264,0,0,308.15,0 +265,0,0,308.15,0 +266,0,0,308.15,0 +267,0,0,308.15,0 +268,0,0,308.15,0 +269,0,0,308.15,0 +270,0,0,308.15,0 +271,0,0,308.15,0 +272,0,0,308.15,0 +273,0,0,308.15,0 +274,0,0,308.15,0 +275,0,0,308.15,0 +276,0,0,308.15,0 +277,0,0,308.15,0 +278,0,0,308.15,0 +279,0,0,308.15,0 +280,0,0,308.15,0 +281,0.044704,0,308.15,0 +282,2.01168,0,308.15,0 +283,4.068064,0,308.15,0 +284,6.079744,0,308.15,0 +285,8.136128,0,308.15,0 +286,10.103104,0,308.15,0 +287,11.712448,0,308.15,0 +288,13.098272,0,308.15,0 +289,14.349984,0,308.15,0 +290,15.42288,0,308.15,0 +291,16.451072,0,308.15,0 +292,17.166336,0,308.15,0 +293,17.8816,0,308.15,0 +294,18.418048,0,308.15,0 +295,18.730976,0,308.15,0 +296,18.865088,0,308.15,0 +297,19.088608,0,308.15,0 +298,19.22272,0,308.15,0 +299,19.356832,0,308.15,0 +300,19.44624,0,308.15,0 +301,19.535648,0,308.15,0 +302,19.803872,0,308.15,0 +303,20.295616,0,308.15,0 +304,20.519136,0,308.15,0 +305,20.921472,0,308.15,0 +306,21.279104,0,308.15,0 +307,21.547328,0,308.15,0 +308,21.726144,0,308.15,0 +309,21.770848,0,308.15,0 +310,21.726144,0,308.15,0 +311,21.90496,0,308.15,0 +312,22.262592,0,308.15,0 +313,22.57552,0,308.15,0 +314,22.888448,0,308.15,0 +315,23.290784,0,308.15,0 +316,23.559008,0,308.15,0 +317,23.871936,0,308.15,0 +318,23.424896,0,308.15,0 +319,24.36368,0,308.15,0 +320,24.497792,0,308.15,0 +321,24.497792,0,308.15,0 +322,24.453088,0,308.15,0 +323,24.274272,0,308.15,0 +324,24.14016,0,308.15,0 +325,24.050752,0,308.15,0 +326,23.91664,0,308.15,0 +327,23.827232,0,308.15,0 +328,23.648416,0,308.15,0 +329,23.514304,0,308.15,0 +330,23.24608,0,308.15,0 +331,23.067264,0,308.15,0 +332,22.79904,0,308.15,0 +333,22.486112,0,308.15,0 +334,22.039072,0,308.15,0 +335,21.502624,0,308.15,0 +336,20.78736,0,308.15,0 +337,19.490944,0,308.15,0 +338,18.194528,0,308.15,0 +339,16.629888,0,308.15,0 +340,15.378176,0,308.15,0 +341,14.037056,0,308.15,0 +342,12.785344,0,308.15,0 +343,10.818368,0,308.15,0 +344,8.091424,0,308.15,0 +345,5.498592,0,308.15,0 +346,3.621024,0,308.15,0 +347,2.145792,0,308.15,0 +348,1.162304,0,308.15,0 +349,0.938784,0,308.15,0 +350,0,0,308.15,0 +351,0,0,308.15,0 +352,0,0,308.15,0 +353,0,0,308.15,0 +354,0,0,308.15,0 +355,0,0,308.15,0 +356,0,0,308.15,0 +357,0,0,308.15,0 +358,0,0,308.15,0 +359,0,0,308.15,0 +360,0,0,308.15,0 +361,0,0,308.15,0 +362,0,0,308.15,0 +363,0,0,308.15,0 +364,0,0,308.15,0 +365,0,0,308.15,0 +366,0,0,308.15,0 +367,0,0,308.15,0 +368,0,0,308.15,0 +369,0,0,308.15,0 +370,0,0,308.15,0 +371,1.922272,0,308.15,0 +372,4.068064,0,308.15,0 +373,5.900928,0,308.15,0 +374,7.286752,0,308.15,0 +375,8.538464,0,308.15,0 +376,9.343136,0,308.15,0 +377,10.147808,0,308.15,0 +378,11.086592,0,308.15,0 +379,12.025376,0,308.15,0 +380,12.874752,0,308.15,0 +381,13.4112,0,308.15,0 +382,13.590016,0,308.15,0 +383,13.679424,0,308.15,0 +384,13.813536,0,308.15,0 +385,13.902944,0,308.15,0 +386,13.768832,0,308.15,0 +387,13.902944,0,308.15,0 +388,14.08176,0,308.15,0 +389,14.484096,0,308.15,0 +390,14.797024,0,308.15,0 +391,14.886432,0,308.15,0 +392,14.931136,0,308.15,0 +393,15.065248,0,308.15,0 +394,15.244064,0,308.15,0 +395,15.512288,0,308.15,0 +396,15.6464,0,308.15,0 +397,15.825216,0,308.15,0 +398,16.004032,0,308.15,0 +399,16.09344,0,308.15,0 +400,16.182848,0,308.15,0 +401,16.227552,0,308.15,0 +402,16.272256,0,308.15,0 +403,16.31696,0,308.15,0 +404,16.495776,0,308.15,0 +405,16.629888,0,308.15,0 +406,16.674592,0,308.15,0 +407,16.898112,0,308.15,0 +408,17.076928,0,308.15,0 +409,17.255744,0,308.15,0 +410,17.345152,0,308.15,0 +411,17.255744,0,308.15,0 +412,17.389856,0,308.15,0 +413,17.43456,0,308.15,0 +414,17.345152,0,308.15,0 +415,17.255744,0,308.15,0 +416,17.032224,0,308.15,0 +417,16.808704,0,308.15,0 +418,16.808704,0,308.15,0 +419,16.674592,0,308.15,0 +420,16.54048,0,308.15,0 +421,16.361664,0,308.15,0 +422,16.182848,0,308.15,0 +423,16.09344,0,308.15,0 +424,16.09344,0,308.15,0 +425,15.86992,0,308.15,0 +426,15.42288,0,308.15,0 +427,14.75232,0,308.15,0 +428,13.85824,0,308.15,0 +429,12.2936,0,308.15,0 +430,10.103104,0,308.15,0 +431,8.9408,0,308.15,0 +432,8.49376,0,308.15,0 +433,8.672576,0,308.15,0 +434,8.583168,0,308.15,0 +435,9.209024,0,308.15,0 +436,10.237216,0,308.15,0 +437,10.997184,0,308.15,0 +438,11.39952,0,308.15,0 +439,12.025376,0,308.15,0 +440,12.204192,0,308.15,0 +441,12.606528,0,308.15,0 +442,13.232384,0,308.15,0 +443,13.500608,0,308.15,0 +444,13.724128,0,308.15,0 +445,13.992352,0,308.15,0 +446,14.171168,0,308.15,0 +447,14.394688,0,308.15,0 +448,14.5288,0,308.15,0 +449,14.75232,0,308.15,0 +450,14.841728,0,308.15,0 +451,14.886432,0,308.15,0 +452,14.797024,0,308.15,0 +453,14.618208,0,308.15,0 +454,14.439392,0,308.15,0 +455,14.260576,0,308.15,0 +456,14.08176,0,308.15,0 +457,13.947648,0,308.15,0 +458,13.768832,0,308.15,0 +459,13.63472,0,308.15,0 +460,13.500608,0,308.15,0 +461,13.366496,0,308.15,0 +462,13.500608,0,308.15,0 +463,13.679424,0,308.15,0 +464,13.813536,0,308.15,0 +465,13.947648,0,308.15,0 +466,14.215872,0,308.15,0 +467,14.484096,0,308.15,0 +468,14.5288,0,308.15,0 +469,14.439392,0,308.15,0 +470,14.439392,0,308.15,0 +471,14.662912,0,308.15,0 +472,14.707616,0,308.15,0 +473,14.662912,0,308.15,0 +474,14.662912,0,308.15,0 +475,14.886432,0,308.15,0 +476,14.931136,0,308.15,0 +477,14.707616,0,308.15,0 +478,14.707616,0,308.15,0 +479,14.662912,0,308.15,0 +480,14.707616,0,308.15,0 +481,14.662912,0,308.15,0 +482,14.662912,0,308.15,0 +483,14.484096,0,308.15,0 +484,14.126464,0,308.15,0 +485,13.679424,0,308.15,0 +486,13.545312,0,308.15,0 +487,13.545312,0,308.15,0 +488,13.321792,0,308.15,0 +489,13.098272,0,308.15,0 +490,12.919456,0,308.15,0 +491,12.874752,0,308.15,0 +492,13.098272,0,308.15,0 +493,13.4112,0,308.15,0 +494,13.500608,0,308.15,0 +495,13.590016,0,308.15,0 +496,13.724128,0,308.15,0 +497,13.768832,0,308.15,0 +498,13.321792,0,308.15,0 +499,12.830048,0,308.15,0 +500,12.919456,0,308.15,0 +501,13.053568,0,308.15,0 +502,13.142976,0,308.15,0 +503,12.785344,0,308.15,0 +504,12.07008,0,308.15,0 +505,12.159488,0,308.15,0 +506,11.891264,0,308.15,0 +507,10.371328,0,308.15,0 +508,9.477248,0,308.15,0 +509,9.477248,0,308.15,0 +510,9.298432,0,308.15,0 +511,8.002016,0,308.15,0 +512,5.900928,0,308.15,0 +513,4.24688,0,308.15,0 +514,2.861056,0,308.15,0 +515,1.832864,0,308.15,0 +516,1.1176,0,308.15,0 +517,0,0,308.15,0 +518,0,0,308.15,0 +519,0,0,308.15,0 +520,0,0,308.15,0 +521,0,0,308.15,0 +522,0,0,308.15,0 +523,0,0,308.15,0 +524,0,0,308.15,0 +525,0,0,308.15,0 +526,0,0,308.15,0 +527,0,0,308.15,0 +528,0,0,308.15,0 +529,0,0,308.15,0 +530,0,0,308.15,0 +531,0,0,308.15,0 +532,0,0,308.15,0 +533,0,0,308.15,0 +534,0,0,308.15,0 +535,0,0,308.15,0 +536,0,0,308.15,0 +537,0.268224,0,308.15,0 +538,1.475232,0,308.15,0 +539,2.637536,0,308.15,0 +540,3.978656,0,308.15,0 +541,4.559808,0,308.15,0 +542,4.649216,0,308.15,0 +543,4.425696,0,308.15,0 +544,4.425696,0,308.15,0 +545,4.69392,0,308.15,0 +546,5.051552,0,308.15,0 +547,5.543296,0,308.15,0 +548,5.722112,0,308.15,0 +549,6.25856,0,308.15,0 +550,6.526784,0,308.15,0 +551,6.92912,0,308.15,0 +552,7.59968,0,308.15,0 +553,7.8232,0,308.15,0 +554,8.091424,0,308.15,0 +555,8.225536,0,308.15,0 +556,8.27024,0,308.15,0 +557,8.136128,0,308.15,0 +558,8.27024,0,308.15,0 +559,8.180832,0,308.15,0 +560,8.136128,0,308.15,0 +561,8.002016,0,308.15,0 +562,7.912608,0,308.15,0 +563,7.912608,0,308.15,0 +564,7.733792,0,308.15,0 +565,7.778496,0,308.15,0 +566,7.510272,0,308.15,0 +567,7.8232,0,308.15,0 +568,7.912608,0,308.15,0 +569,7.8232,0,308.15,0 +570,7.867904,0,308.15,0 +571,7.733792,0,308.15,0 +572,7.778496,0,308.15,0 +573,7.867904,0,308.15,0 +574,7.867904,0,308.15,0 +575,8.002016,0,308.15,0 +576,8.04672,0,308.15,0 +577,7.957312,0,308.15,0 +578,7.912608,0,308.15,0 +579,7.8232,0,308.15,0 +580,7.912608,0,308.15,0 +581,7.912608,0,308.15,0 +582,8.091424,0,308.15,0 +583,8.225536,0,308.15,0 +584,8.583168,0,308.15,0 +585,8.449056,0,308.15,0 +586,8.04672,0,308.15,0 +587,6.973824,0,308.15,0 +588,5.945632,0,308.15,0 +589,4.4704,0,308.15,0 +590,3.442208,0,308.15,0 +591,2.592832,0,308.15,0 +592,1.654048,0,308.15,0 +593,1.072896,0,308.15,0 +594,0,0,308.15,0 +595,0,0,308.15,0 +596,0,0,308.15,0 +597,0,0,308.15,0 +598,0,0,308.15,0 +599,0,0,308.15,0 +600,0,0,308.15,0 \ No newline at end of file diff --git a/fastsim-core/resources/cycles/us06.csv b/fastsim-core/resources/cycles/us06.csv new file mode 100755 index 000000000..bc2191743 --- /dev/null +++ b/fastsim-core/resources/cycles/us06.csv @@ -0,0 +1,602 @@ +time_seconds,speed_meters_per_second,grade +0,0,0 +1,0,0 +2,0,0 +3,0,0 +4,0,0 +5,0,0 +6,0.089408,0 +7,0.312928,0 +8,0.491744,0 +9,0.759968,0 +10,2.68224,0 +11,6.213856,0 +12,9.16432,0 +13,11.488928,0 +14,11.176,0 +15,12.695936,0 +16,14.439392,0 +17,15.467584,0 +18,16.31696,0 +19,17.166336,0 +20,17.836896,0 +21,18.865088,0 +22,19.580352,0 +23,19.759168,0 +24,19.401536,0 +25,19.043904,0 +26,18.015712,0 +27,17.523968,0 +28,17.166336,0 +29,17.166336,0 +30,17.523968,0 +31,17.345152,0 +32,17.345152,0 +33,16.31696,0 +34,14.439392,0 +35,12.338304,0 +36,9.968992,0 +37,7.733792,0 +38,5.14096,0 +39,2.592832,0 +40,0.536448,0 +41,0,0 +42,0,0 +43,0,0 +44,0,0 +45,0,0 +46,0,0 +47,0,0 +48,0,0 +49,0.357632,0 +50,4.112768,0 +51,6.660896,0 +52,8.136128,0 +53,9.924288,0 +54,12.159488,0 +55,14.037056,0 +56,15.109952,0 +57,16.629888,0 +58,18.239232,0 +59,19.66976,0 +60,20.697952,0 +61,21.279104,0 +62,22.12848,0 +63,22.888448,0 +64,23.69312,0 +65,24.318976,0 +66,24.855424,0 +67,25.213056,0 +68,25.078944,0 +69,25.123648,0 +70,24.944832,0 +71,24.631904,0 +72,24.318976,0 +73,24.229568,0 +74,24.318976,0 +75,24.229568,0 +76,23.91664,0 +77,23.380192,0 +78,23.24608,0 +79,23.201376,0 +80,23.156672,0 +81,23.201376,0 +82,23.24608,0 +83,23.4696,0 +84,23.871936,0 +85,24.542496,0 +86,25.391872,0 +87,26.285952,0 +88,27.090624,0 +89,27.850592,0 +90,28.699968,0 +91,29.594048,0 +92,30.309312,0 +93,31.024576,0 +94,31.471616,0 +95,31.561024,0 +96,31.605728,0 +97,31.426912,0 +98,30.488128,0 +99,29.72816,0 +100,29.012896,0 +101,28.476448,0 +102,27.94,0 +103,27.26944,0 +104,26.509472,0 +105,25.794208,0 +106,25.03424,0 +107,24.36368,0 +108,23.603712,0 +109,22.888448,0 +110,22.12848,0 +111,21.45792,0 +112,20.697952,0 +113,19.66976,0 +114,18.373344,0 +115,17.345152,0 +116,16.853408,0 +117,16.361664,0 +118,15.780512,0 +119,13.4112,0 +120,10.907776,0 +121,8.851392,0 +122,6.92912,0 +123,4.828032,0 +124,2.816352,0 +125,1.430528,0 +126,0.938784,0 +127,0.536448,0 +128,0,0 +129,0,0 +130,0,0 +131,0,0 +132,0,0 +133,0,0 +134,0,0 +135,0,0 +136,1.207008,0 +137,4.112768,0 +138,7.197344,0 +139,10.147808,0 +140,13.053568,0 +141,15.288768,0 +142,17.345152,0 +143,19.22272,0 +144,20.250912,0 +145,20.921472,0 +146,21.45792,0 +147,22.12848,0 +148,22.486112,0 +149,23.02256,0 +150,23.335488,0 +151,23.514304,0 +152,23.69312,0 +153,24.050752,0 +154,24.050752,0 +155,24.050752,0 +156,24.408384,0 +157,25.168352,0 +158,25.436576,0 +159,25.973024,0 +160,26.107136,0 +161,26.643584,0 +162,26.777696,0 +163,26.911808,0 +164,27.04592,0 +165,26.688288,0 +166,26.062432,0 +167,25.973024,0 +168,25.838912,0 +169,25.615392,0 +170,25.7048,0 +171,25.302464,0 +172,25.48128,0 +173,25.302464,0 +174,25.25776,0 +175,25.123648,0 +176,25.213056,0 +177,25.302464,0 +178,25.213056,0 +179,25.078944,0 +180,25.03424,0 +181,24.989536,0 +182,24.497792,0 +183,24.229568,0 +184,24.408384,0 +185,23.335488,0 +186,24.453088,0 +187,24.900128,0 +188,25.48128,0 +189,25.92832,0 +190,25.973024,0 +191,26.554176,0 +192,26.777696,0 +193,27.26944,0 +194,27.448256,0 +195,27.671776,0 +196,27.94,0 +197,27.94,0 +198,28.029408,0 +199,27.805888,0 +200,27.94,0 +201,28.208224,0 +202,28.029408,0 +203,28.074112,0 +204,28.16352,0 +205,28.655264,0 +206,28.565856,0 +207,28.655264,0 +208,28.744672,0 +209,28.83408,0 +210,29.012896,0 +211,29.191712,0 +212,29.50464,0 +213,29.50464,0 +214,29.683456,0 +215,28.655264,0 +216,28.431744,0 +217,28.565856,0 +218,28.655264,0 +219,28.476448,0 +220,28.744672,0 +221,28.699968,0 +222,28.565856,0 +223,28.699968,0 +224,28.342336,0 +225,28.61056,0 +226,28.565856,0 +227,28.61056,0 +228,28.521152,0 +229,28.61056,0 +230,28.297632,0 +231,28.342336,0 +232,28.565856,0 +233,28.61056,0 +234,28.744672,0 +235,28.968192,0 +236,29.102304,0 +237,28.61056,0 +238,28.699968,0 +239,28.208224,0 +240,28.476448,0 +241,28.208224,0 +242,28.476448,0 +243,28.38704,0 +244,28.16352,0 +245,28.208224,0 +246,28.16352,0 +247,28.297632,0 +248,28.342336,0 +249,28.297632,0 +250,27.94,0 +251,27.94,0 +252,28.118816,0 +253,28.074112,0 +254,27.805888,0 +255,27.895296,0 +256,27.850592,0 +257,27.850592,0 +258,27.895296,0 +259,27.761184,0 +260,27.94,0 +261,28.074112,0 +262,27.850592,0 +263,27.850592,0 +264,27.895296,0 +265,27.671776,0 +266,28.074112,0 +267,28.074112,0 +268,27.850592,0 +269,28.074112,0 +270,27.895296,0 +271,27.761184,0 +272,27.671776,0 +273,27.627072,0 +274,27.761184,0 +275,27.761184,0 +276,27.761184,0 +277,27.71648,0 +278,27.895296,0 +279,27.805888,0 +280,27.805888,0 +281,27.895296,0 +282,28.029408,0 +283,27.984704,0 +284,28.476448,0 +285,28.744672,0 +286,28.968192,0 +287,29.102304,0 +288,29.459936,0 +289,29.549344,0 +290,29.95168,0 +291,30.041088,0 +292,30.1752,0 +293,30.532832,0 +294,30.532832,0 +295,30.756352,0 +296,30.890464,0 +297,31.024576,0 +298,32.052768,0 +299,32.231584,0 +300,33.483296,0 +301,32.455104,0 +302,32.276288,0 +303,32.276288,0 +304,32.18688,0 +305,32.4104,0 +306,32.544512,0 +307,32.499808,0 +308,32.097472,0 +309,31.918656,0 +310,31.784544,0 +311,31.784544,0 +312,31.695136,0 +313,31.73984,0 +314,31.73984,0 +315,31.829248,0 +316,32.231584,0 +317,32.455104,0 +318,32.902144,0 +319,33.438592,0 +320,33.840928,0 +321,34.556192,0 +322,35.047936,0 +323,35.450272,0 +324,34.958528,0 +325,33.97504,0 +326,33.796224,0 +327,34.153856,0 +328,34.690304,0 +329,34.86912,0 +330,35.360864,0 +331,35.53968,0 +332,35.718496,0 +333,35.718496,0 +334,35.897312,0 +335,35.897312,0 +336,35.53968,0 +337,35.53968,0 +338,35.360864,0 +339,35.182048,0 +340,34.690304,0 +341,34.19856,0 +342,33.215072,0 +343,32.455104,0 +344,31.650432,0 +345,30.219904,0 +346,29.683456,0 +347,29.817568,0 +348,29.549344,0 +349,29.459936,0 +350,29.594048,0 +351,29.549344,0 +352,29.996384,0 +353,30.130496,0 +354,30.532832,0 +355,30.532832,0 +356,30.711648,0 +357,30.488128,0 +358,30.443424,0 +359,30.39872,0 +360,29.996384,0 +361,29.683456,0 +362,29.549344,0 +363,29.370528,0 +364,29.50464,0 +365,29.683456,0 +366,29.50464,0 +367,29.638752,0 +368,29.95168,0 +369,30.1752,0 +370,30.354016,0 +371,30.443424,0 +372,30.62224,0 +373,30.801056,0 +374,30.666944,0 +375,31.024576,0 +376,31.024576,0 +377,31.024576,0 +378,31.2928,0 +379,31.471616,0 +380,31.561024,0 +381,31.695136,0 +382,31.426912,0 +383,31.561024,0 +384,31.426912,0 +385,31.158688,0 +386,31.248096,0 +387,31.337504,0 +388,31.113984,0 +389,30.979872,0 +390,31.248096,0 +391,31.158688,0 +392,31.06928,0 +393,31.248096,0 +394,31.382208,0 +395,31.382208,0 +396,31.382208,0 +397,31.73984,0 +398,31.650432,0 +399,31.695136,0 +400,31.605728,0 +401,31.695136,0 +402,31.829248,0 +403,31.873952,0 +404,31.650432,0 +405,31.829248,0 +406,32.052768,0 +407,32.142176,0 +408,32.455104,0 +409,32.320992,0 +410,32.320992,0 +411,32.231584,0 +412,32.18688,0 +413,32.142176,0 +414,32.455104,0 +415,32.544512,0 +416,32.723328,0 +417,32.231584,0 +418,31.96336,0 +419,31.695136,0 +420,31.471616,0 +421,31.51632,0 +422,31.695136,0 +423,31.382208,0 +424,31.73984,0 +425,31.382208,0 +426,31.426912,0 +427,30.890464,0 +428,30.756352,0 +429,30.488128,0 +430,30.532832,0 +431,30.488128,0 +432,30.264608,0 +433,30.085792,0 +434,30.1752,0 +435,30.219904,0 +436,30.219904,0 +437,30.041088,0 +438,29.95168,0 +439,29.638752,0 +440,29.772864,0 +441,29.594048,0 +442,29.683456,0 +443,29.459936,0 +444,29.549344,0 +445,29.28112,0 +446,27.805888,0 +447,27.805888,0 +448,27.448256,0 +449,27.314144,0 +450,27.448256,0 +451,27.314144,0 +452,27.448256,0 +453,27.448256,0 +454,27.627072,0 +455,27.627072,0 +456,27.627072,0 +457,27.627072,0 +458,27.805888,0 +459,27.627072,0 +460,27.805888,0 +461,27.984704,0 +462,27.805888,0 +463,27.984704,0 +464,27.805888,0 +465,27.984704,0 +466,27.984704,0 +467,28.16352,0 +468,27.984704,0 +469,27.805888,0 +470,27.314144,0 +471,26.59888,0 +472,26.285952,0 +473,25.391872,0 +474,24.900128,0 +475,24.184864,0 +476,23.02256,0 +477,21.994368,0 +478,21.815552,0 +479,21.279104,0 +480,20.072096,0 +481,18.55216,0 +482,16.629888,0 +483,15.467584,0 +484,14.75232,0 +485,13.053568,0 +486,9.968992,0 +487,7.912608,0 +488,7.733792,0 +489,6.25856,0 +490,4.4704,0 +491,2.68224,0 +492,0.89408,0 +493,0,0 +494,0,0 +495,0,0 +496,0,0 +497,0,0 +498,0,0 +499,0,0 +500,0,0 +501,0.089408,0 +502,1.966976,0 +503,4.515104,0 +504,6.973824,0 +505,9.298432,0 +506,11.220704,0 +507,12.383008,0 +508,12.606528,0 +509,11.980672,0 +510,11.086592,0 +511,10.013696,0 +512,7.644384,0 +513,5.051552,0 +514,3.084576,0 +515,3.3528,0 +516,4.962144,0 +517,6.884416,0 +518,8.896096,0 +519,10.818368,0 +520,12.114784,0 +521,12.74064,0 +522,12.606528,0 +523,11.444224,0 +524,9.700768,0 +525,7.733792,0 +526,5.409184,0 +527,3.3528,0 +528,2.592832,0 +529,1.072896,0 +530,0.536448,0 +531,0.849376,0 +532,2.995168,0 +533,5.275072,0 +534,7.510272,0 +535,9.700768,0 +536,11.578336,0 +537,12.383008,0 +538,12.51712,0 +539,12.114784,0 +540,10.907776,0 +541,9.030208,0 +542,6.795008,0 +543,4.157472,0 +544,2.2352,0 +545,1.296416,0 +546,1.072896,0 +547,3.755136,0 +548,6.03504,0 +549,7.957312,0 +550,9.924288,0 +551,11.712448,0 +552,13.4112,0 +553,13.321792,0 +554,11.62304,0 +555,9.521952,0 +556,7.242048,0 +557,5.096256,0 +558,2.950464,0 +559,1.162304,0 +560,0,0 +561,0,0 +562,0,0 +563,0,0 +564,0,0 +565,0,0 +566,0,0 +567,0,0 +568,0.134112,0 +569,2.861056,0 +570,5.677408,0 +571,8.583168,0 +572,10.639552,0 +573,12.606528,0 +574,15.601696,0 +575,16.764,0 +576,18.015712,0 +577,20.1168,0 +578,22.307296,0 +579,23.067264,0 +580,22.888448,0 +581,22.620224,0 +582,22.307296,0 +583,21.368512,0 +584,19.937984,0 +585,18.418048,0 +586,16.898112,0 +587,14.931136,0 +588,12.51712,0 +589,10.594848,0 +590,8.404352,0 +591,5.766816,0 +592,2.771648,0 +593,0.983488,0 +594,0,0 +595,0,0 +596,0,0 +597,0,0 +598,0,0 +599,0,0 +600,0,0 \ No newline at end of file diff --git a/fastsim-core/resources/cycles/us06_city_1.csv b/fastsim-core/resources/cycles/us06_city_1.csv new file mode 100755 index 000000000..011d0dabe --- /dev/null +++ b/fastsim-core/resources/cycles/us06_city_1.csv @@ -0,0 +1,131 @@ +time_seconds,speed_meters_per_second,grade +0,0,0 +1,0,0 +2,0,0 +3,0,0 +4,0,0 +5,0,0 +6,0.089408,0 +7,0.312928,0 +8,0.491744,0 +9,0.759968,0 +10,2.68224,0 +11,6.213856,0 +12,9.16432,0 +13,11.488928,0 +14,11.176,0 +15,12.695936,0 +16,14.439392,0 +17,15.467584,0 +18,16.31696,0 +19,17.166336,0 +20,17.836896,0 +21,18.865088,0 +22,19.580352,0 +23,19.759168,0 +24,19.401536,0 +25,19.043904,0 +26,18.015712,0 +27,17.523968,0 +28,17.166336,0 +29,17.166336,0 +30,17.523968,0 +31,17.345152,0 +32,17.345152,0 +33,16.31696,0 +34,14.439392,0 +35,12.338304,0 +36,9.968992,0 +37,7.733792,0 +38,5.14096,0 +39,2.592832,0 +40,0.536448,0 +41,0,0 +42,0,0 +43,0,0 +44,0,0 +45,0,0 +46,0,0 +47,0,0 +48,0,0 +49,0.357632,0 +50,4.112768,0 +51,6.660896,0 +52,8.136128,0 +53,9.924288,0 +54,12.159488,0 +55,14.037056,0 +56,15.109952,0 +57,16.629888,0 +58,18.239232,0 +59,19.66976,0 +60,20.697952,0 +61,21.279104,0 +62,22.12848,0 +63,22.888448,0 +64,23.69312,0 +65,24.318976,0 +66,24.855424,0 +67,25.213056,0 +68,25.078944,0 +69,25.123648,0 +70,24.944832,0 +71,24.631904,0 +72,24.318976,0 +73,24.229568,0 +74,24.318976,0 +75,24.229568,0 +76,23.91664,0 +77,23.380192,0 +78,23.24608,0 +79,23.201376,0 +80,23.156672,0 +81,23.201376,0 +82,23.24608,0 +83,23.4696,0 +84,23.871936,0 +85,24.542496,0 +86,25.391872,0 +87,26.285952,0 +88,27.090624,0 +89,27.850592,0 +90,28.699968,0 +91,29.594048,0 +92,30.309312,0 +93,31.024576,0 +94,31.471616,0 +95,31.561024,0 +96,31.605728,0 +97,31.426912,0 +98,30.488128,0 +99,29.72816,0 +100,29.012896,0 +101,28.476448,0 +102,27.94,0 +103,27.26944,0 +104,26.509472,0 +105,25.794208,0 +106,25.03424,0 +107,24.36368,0 +108,23.603712,0 +109,22.888448,0 +110,22.12848,0 +111,21.45792,0 +112,20.697952,0 +113,19.66976,0 +114,18.373344,0 +115,17.345152,0 +116,16.853408,0 +117,16.361664,0 +118,15.780512,0 +119,13.4112,0 +120,10.907776,0 +121,8.851392,0 +122,6.92912,0 +123,4.828032,0 +124,2.816352,0 +125,1.430528,0 +126,0.938784,0 +127,0.536448,0 +128,0,0 +129,0,0 diff --git a/fastsim-core/resources/cycles/us06_city_2.csv b/fastsim-core/resources/cycles/us06_city_2.csv new file mode 100755 index 000000000..46c5cee91 --- /dev/null +++ b/fastsim-core/resources/cycles/us06_city_2.csv @@ -0,0 +1,107 @@ +time_seconds,speed_meters_per_second,grade +0,0,0 +1,0,0 +2,0,0 +3,0,0 +4,0,0 +5,0,0 +6,0.089408,0 +7,1.966976,0 +8,4.515104,0 +9,6.973824,0 +10,9.298432,0 +11,11.220704,0 +12,12.383008,0 +13,12.606528,0 +14,11.980672,0 +15,11.086592,0 +16,10.013696,0 +17,7.644384,0 +18,5.051552,0 +19,3.084576,0 +20,3.3528,0 +21,4.962144,0 +22,6.884416,0 +23,8.896096,0 +24,10.818368,0 +25,12.114784,0 +26,12.74064,0 +27,12.606528,0 +28,11.444224,0 +29,9.700768,0 +30,7.733792,0 +31,5.409184,0 +32,3.3528,0 +33,2.592832,0 +34,1.072896,0 +35,0.536448,0 +36,0.849376,0 +37,2.995168,0 +38,5.275072,0 +39,7.510272,0 +40,9.700768,0 +41,11.578336,0 +42,12.383008,0 +43,12.51712,0 +44,12.114784,0 +45,10.907776,0 +46,9.030208,0 +47,6.795008,0 +48,4.157472,0 +49,2.2352,0 +50,1.296416,0 +51,1.072896,0 +52,3.755136,0 +53,6.03504,0 +54,7.957312,0 +55,9.924288,0 +56,11.712448,0 +57,13.4112,0 +58,13.321792,0 +59,11.62304,0 +60,9.521952,0 +61,7.242048,0 +62,5.096256,0 +63,2.950464,0 +64,1.162304,0 +65,0,0 +66,0,0 +67,0,0 +68,0,0 +69,0,0 +70,0,0 +71,0,0 +72,0,0 +73,0.134112,0 +74,2.861056,0 +75,5.677408,0 +76,8.583168,0 +77,10.639552,0 +78,12.606528,0 +79,15.601696,0 +80,16.764,0 +81,18.015712,0 +82,20.1168,0 +83,22.307296,0 +84,23.067264,0 +85,22.888448,0 +86,22.620224,0 +87,22.307296,0 +88,21.368512,0 +89,19.937984,0 +90,18.418048,0 +91,16.898112,0 +92,14.931136,0 +93,12.51712,0 +94,10.594848,0 +95,8.404352,0 +96,5.766816,0 +97,2.771648,0 +98,0.983488,0 +99,0,0 +100,0,0 +101,0,0 +102,0,0 +103,0,0 +104,0,0 +105,0,0 \ No newline at end of file diff --git a/fastsim-core/resources/cycles/us06_highway.csv b/fastsim-core/resources/cycles/us06_highway.csv new file mode 100755 index 000000000..2889232a1 --- /dev/null +++ b/fastsim-core/resources/cycles/us06_highway.csv @@ -0,0 +1,366 @@ +time_seconds,speed_meters_per_second,grade +0,0,0 +1,0,0 +2,0,0 +3,0,0 +4,0,0 +5,0,0 +6,1.207008,0 +7,4.112768,0 +8,7.197344,0 +9,10.147808,0 +10,13.053568,0 +11,15.288768,0 +12,17.345152,0 +13,19.22272,0 +14,20.250912,0 +15,20.921472,0 +16,21.45792,0 +17,22.12848,0 +18,22.486112,0 +19,23.02256,0 +20,23.335488,0 +21,23.514304,0 +22,23.69312,0 +23,24.050752,0 +24,24.050752,0 +25,24.050752,0 +26,24.408384,0 +27,25.168352,0 +28,25.436576,0 +29,25.973024,0 +30,26.107136,0 +31,26.643584,0 +32,26.777696,0 +33,26.911808,0 +34,27.04592,0 +35,26.688288,0 +36,26.062432,0 +37,25.973024,0 +38,25.838912,0 +39,25.615392,0 +40,25.7048,0 +41,25.302464,0 +42,25.48128,0 +43,25.302464,0 +44,25.25776,0 +45,25.123648,0 +46,25.213056,0 +47,25.302464,0 +48,25.213056,0 +49,25.078944,0 +50,25.03424,0 +51,24.989536,0 +52,24.497792,0 +53,24.229568,0 +54,24.408384,0 +55,23.335488,0 +56,24.453088,0 +57,24.900128,0 +58,25.48128,0 +59,25.92832,0 +60,25.973024,0 +61,26.554176,0 +62,26.777696,0 +63,27.26944,0 +64,27.448256,0 +65,27.671776,0 +66,27.94,0 +67,27.94,0 +68,28.029408,0 +69,27.805888,0 +70,27.94,0 +71,28.208224,0 +72,28.029408,0 +73,28.074112,0 +74,28.16352,0 +75,28.655264,0 +76,28.565856,0 +77,28.655264,0 +78,28.744672,0 +79,28.83408,0 +80,29.012896,0 +81,29.191712,0 +82,29.50464,0 +83,29.50464,0 +84,29.683456,0 +85,28.655264,0 +86,28.431744,0 +87,28.565856,0 +88,28.655264,0 +89,28.476448,0 +90,28.744672,0 +91,28.699968,0 +92,28.565856,0 +93,28.699968,0 +94,28.342336,0 +95,28.61056,0 +96,28.565856,0 +97,28.61056,0 +98,28.521152,0 +99,28.61056,0 +100,28.297632,0 +101,28.342336,0 +102,28.565856,0 +103,28.61056,0 +104,28.744672,0 +105,28.968192,0 +106,29.102304,0 +107,28.61056,0 +108,28.699968,0 +109,28.208224,0 +110,28.476448,0 +111,28.208224,0 +112,28.476448,0 +113,28.38704,0 +114,28.16352,0 +115,28.208224,0 +116,28.16352,0 +117,28.297632,0 +118,28.342336,0 +119,28.297632,0 +120,27.94,0 +121,27.94,0 +122,28.118816,0 +123,28.074112,0 +124,27.805888,0 +125,27.895296,0 +126,27.850592,0 +127,27.850592,0 +128,27.895296,0 +129,27.761184,0 +130,27.94,0 +131,28.074112,0 +132,27.850592,0 +133,27.850592,0 +134,27.895296,0 +135,27.671776,0 +136,28.074112,0 +137,28.074112,0 +138,27.850592,0 +139,28.074112,0 +140,27.895296,0 +141,27.761184,0 +142,27.671776,0 +143,27.627072,0 +144,27.761184,0 +145,27.761184,0 +146,27.761184,0 +147,27.71648,0 +148,27.895296,0 +149,27.805888,0 +150,27.805888,0 +151,27.895296,0 +152,28.029408,0 +153,27.984704,0 +154,28.476448,0 +155,28.744672,0 +156,28.968192,0 +157,29.102304,0 +158,29.459936,0 +159,29.549344,0 +160,29.95168,0 +161,30.041088,0 +162,30.1752,0 +163,30.532832,0 +164,30.532832,0 +165,30.756352,0 +166,30.890464,0 +167,31.024576,0 +168,32.052768,0 +169,32.231584,0 +170,33.483296,0 +171,32.455104,0 +172,32.276288,0 +173,32.276288,0 +174,32.18688,0 +175,32.4104,0 +176,32.544512,0 +177,32.499808,0 +178,32.097472,0 +179,31.918656,0 +180,31.784544,0 +181,31.784544,0 +182,31.695136,0 +183,31.73984,0 +184,31.73984,0 +185,31.829248,0 +186,32.231584,0 +187,32.455104,0 +188,32.902144,0 +189,33.438592,0 +190,33.840928,0 +191,34.556192,0 +192,35.047936,0 +193,35.450272,0 +194,34.958528,0 +195,33.97504,0 +196,33.796224,0 +197,34.153856,0 +198,34.690304,0 +199,34.86912,0 +200,35.360864,0 +201,35.53968,0 +202,35.718496,0 +203,35.718496,0 +204,35.897312,0 +205,35.897312,0 +206,35.53968,0 +207,35.53968,0 +208,35.360864,0 +209,35.182048,0 +210,34.690304,0 +211,34.19856,0 +212,33.215072,0 +213,32.455104,0 +214,31.650432,0 +215,30.219904,0 +216,29.683456,0 +217,29.817568,0 +218,29.549344,0 +219,29.459936,0 +220,29.594048,0 +221,29.549344,0 +222,29.996384,0 +223,30.130496,0 +224,30.532832,0 +225,30.532832,0 +226,30.711648,0 +227,30.488128,0 +228,30.443424,0 +229,30.39872,0 +230,29.996384,0 +231,29.683456,0 +232,29.549344,0 +233,29.370528,0 +234,29.50464,0 +235,29.683456,0 +236,29.50464,0 +237,29.638752,0 +238,29.95168,0 +239,30.1752,0 +240,30.354016,0 +241,30.443424,0 +242,30.62224,0 +243,30.801056,0 +244,30.666944,0 +245,31.024576,0 +246,31.024576,0 +247,31.024576,0 +248,31.2928,0 +249,31.471616,0 +250,31.561024,0 +251,31.695136,0 +252,31.426912,0 +253,31.561024,0 +254,31.426912,0 +255,31.158688,0 +256,31.248096,0 +257,31.337504,0 +258,31.113984,0 +259,30.979872,0 +260,31.248096,0 +261,31.158688,0 +262,31.06928,0 +263,31.248096,0 +264,31.382208,0 +265,31.382208,0 +266,31.382208,0 +267,31.73984,0 +268,31.650432,0 +269,31.695136,0 +270,31.605728,0 +271,31.695136,0 +272,31.829248,0 +273,31.873952,0 +274,31.650432,0 +275,31.829248,0 +276,32.052768,0 +277,32.142176,0 +278,32.455104,0 +279,32.320992,0 +280,32.320992,0 +281,32.231584,0 +282,32.18688,0 +283,32.142176,0 +284,32.455104,0 +285,32.544512,0 +286,32.723328,0 +287,32.231584,0 +288,31.96336,0 +289,31.695136,0 +290,31.471616,0 +291,31.51632,0 +292,31.695136,0 +293,31.382208,0 +294,31.73984,0 +295,31.382208,0 +296,31.426912,0 +297,30.890464,0 +298,30.756352,0 +299,30.488128,0 +300,30.532832,0 +301,30.488128,0 +302,30.264608,0 +303,30.085792,0 +304,30.1752,0 +305,30.219904,0 +306,30.219904,0 +307,30.041088,0 +308,29.95168,0 +309,29.638752,0 +310,29.772864,0 +311,29.594048,0 +312,29.683456,0 +313,29.459936,0 +314,29.549344,0 +315,29.28112,0 +316,27.805888,0 +317,27.805888,0 +318,27.448256,0 +319,27.314144,0 +320,27.448256,0 +321,27.314144,0 +322,27.448256,0 +323,27.448256,0 +324,27.627072,0 +325,27.627072,0 +326,27.627072,0 +327,27.627072,0 +328,27.805888,0 +329,27.627072,0 +330,27.805888,0 +331,27.984704,0 +332,27.805888,0 +333,27.984704,0 +334,27.805888,0 +335,27.984704,0 +336,27.984704,0 +337,28.16352,0 +338,27.984704,0 +339,27.805888,0 +340,27.314144,0 +341,26.59888,0 +342,26.285952,0 +343,25.391872,0 +344,24.900128,0 +345,24.184864,0 +346,23.02256,0 +347,21.994368,0 +348,21.815552,0 +349,21.279104,0 +350,20.072096,0 +351,18.55216,0 +352,16.629888,0 +353,15.467584,0 +354,14.75232,0 +355,13.053568,0 +356,9.968992,0 +357,7.912608,0 +358,7.733792,0 +359,6.25856,0 +360,4.4704,0 +361,2.68224,0 +362,0.89408,0 +363,0,0 +364,0,0 \ No newline at end of file diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml new file mode 100644 index 000000000..15f90749f --- /dev/null +++ b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml @@ -0,0 +1,232 @@ +--- +name: 2026 Chrysler Pacifica Select +doc: ~ +year: 2026 +pt_type: + Conv: + fs: + pwr_out_max_watts: 2000000.0 + pwr_ramp_lag_seconds: 1.1 + energy_capacity_joules: 2305080000.0 + specific_energy_joules_per_kilogram: ~ + mass_kilograms: ~ + fc: + thrml: None + mass_kilograms: ~ + specific_pwr_watts_per_kilogram: ~ + pwr_out_max_watts: 211088.0 + pwr_out_max_init_watts: 34604.59016393443 + pwr_ramp_lag_seconds: 6.1 + eff_interp_from_pwr_out: + data: + grid: + - v: 1 + dim: + - 12 + data: + - 0.0 + - 0.005 + - 0.015 + - 0.04 + - 0.06 + - 0.1 + - 0.14 + - 0.2 + - 0.4 + - 0.6 + - 0.8 + - 1.0 + values: + v: 1 + dim: + - 12 + data: + - 0.0 + - 0.0875106035 + - 0.143482108 + - 0.216273855 + - 0.252599848 + - 0.301508117 + - 0.33 + - 0.34 + - 0.35 + - 0.34 + - 0.32 + - 0.3 + strategy: Linear + extrapolate: Error + pwr_idle_fuel_watts: 0.0 + state: + i: 0 + pwr_out_max_watts: 0.0 + pwr_prop_max_watts: 0.0 + eff: 0.0 + pwr_prop_watts: 0.0 + energy_prop_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_fuel_watts: 0.0 + energy_fuel_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + fc_on: false + time_on_seconds: 0.0 + history: + i: [] + pwr_out_max_watts: [] + pwr_prop_max_watts: [] + eff: [] + pwr_prop_watts: [] + energy_prop_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_fuel_watts: [] + energy_fuel_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + fc_on: [] + time_on_seconds: [] + save_interval: 1 + transmission: + mass_kilograms: ~ + eff_interp: 0.95 + state: + i: 0 + pwr_out_fwd_max_watts: 0.0 + pwr_out_regen_max_watts: 0.0 + eff: 0.0 + pwr_out_watts: 0.0 + energy_out_joules: 0.0 + pwr_in_watts: 0.0 + energy_in_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + history: + i: [] + pwr_out_fwd_max_watts: [] + pwr_out_regen_max_watts: [] + eff: [] + pwr_out_watts: [] + energy_out_joules: [] + pwr_in_watts: [] + energy_in_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + save_interval: 1 + pt_cntrl: + StopStart: + fc_min_time_on_seconds: 5.0 + temp_fc_forced_on_kelvin: ~ + temp_fc_allowed_off_kelvin: ~ + time_delay_after_stop_until_fc_can_turn_off_seconds: 0.0 + save_interval: ~ + state: + i: 0 + fc_temperature_too_low: false + vehicle_not_stopped: false + on_time_too_short: false + time_vehicle_stopped_seconds: 0.0 + vehicle_not_stopped_long_enough: false + has_traction_power_request: false + history: + i: [] + fc_temperature_too_low: [] + vehicle_not_stopped: [] + on_time_too_short: [] + time_vehicle_stopped_seconds: [] + vehicle_not_stopped_long_enough: [] + has_traction_power_request: [] + dfco_cntrl: + dfco_enabled: true + minimum_dfco_speed_meters_per_second: 11.176 + minimum_dfco_deceleration_meters_per_second_squared: -0.2 + save_interval: ~ + state: + i: 0 + vehicle_dynamics_prevent_dfco: false + history: + i: [] + vehicle_dynamics_prevent_dfco: [] + mass_kilograms: ~ + alt_eff: 1.0 +chassis: + drag_coef: 0.3303036837542712 + frontal_area_square_meters: 3.05124164 + wheel_rr_coef: 0.0064798953284486704 + wheel_inertia_kilogram_square_meters: 0.815 + num_wheels: 4 + wheel_radius_meters: 0.36865 + tire_code: ~ + cg_height_meters: 0.53 + wheel_fric_coef: 0.8 + drive_type: FWD + drive_axle_weight_frac: 0.61 + wheel_base_meters: 3.08864 + mass_kilograms: ~ + glider_mass_kilograms: ~ + cargo_mass_kilograms: ~ +cabin: None +hvac: None +mass_kilograms: 2154.564 +pwr_aux_base_watts: 700.0 +save_interval: 1 +state: + i: 0 + time_seconds: 0.0 + pwr_prop_fwd_max_watts: 0.0 + pwr_prop_bwd_max_watts: 0.0 + pwr_tractive_watts: 0.0 + pwr_tractive_for_cyc_watts: 0.0 + energy_tractive_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_drag_watts: 0.0 + energy_drag_joules: 0.0 + pwr_accel_watts: 0.0 + energy_accel_joules: 0.0 + pwr_ascent_watts: 0.0 + energy_ascent_joules: 0.0 + pwr_rr_watts: 0.0 + energy_rr_joules: 0.0 + pwr_whl_inertia_watts: 0.0 + energy_whl_inertia_joules: 0.0 + pwr_brake_watts: 0.0 + energy_brake_joules: 0.0 + cyc_met: true + cyc_met_overall: true + speed_ach_meters_per_second: 0.0 + dist_meters: 0.0 + grade_curr: 0.0 + elev_curr_meters: 0.0 + air_density_kilograms_per_cubic_meter: 0.0 + mass_kilograms: .nan +history: + i: [] + time_seconds: [] + pwr_prop_fwd_max_watts: [] + pwr_prop_bwd_max_watts: [] + pwr_tractive_watts: [] + pwr_tractive_for_cyc_watts: [] + energy_tractive_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_drag_watts: [] + energy_drag_joules: [] + pwr_accel_watts: [] + energy_accel_joules: [] + pwr_ascent_watts: [] + energy_ascent_joules: [] + pwr_rr_watts: [] + energy_rr_joules: [] + pwr_whl_inertia_watts: [] + energy_whl_inertia_joules: [] + pwr_brake_watts: [] + energy_brake_joules: [] + cyc_met: [] + cyc_met_overall: [] + speed_ach_meters_per_second: [] + dist_meters: [] + grade_curr: [] + elev_curr_meters: [] + air_density_kilograms_per_cubic_meter: [] + mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml new file mode 100644 index 000000000..3836d4d6e --- /dev/null +++ b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml @@ -0,0 +1,247 @@ +--- +name: 2026 Chrysler Pacifica Select (Thermal) +doc: ~ +year: 2026 +pt_type: + Conv: + fs: + pwr_out_max_watts: 2000000.0 + pwr_ramp_lag_seconds: 1.1 + energy_capacity_joules: 2305080000.0 + specific_energy_joules_per_kilogram: ~ + mass_kilograms: ~ + fc: + thrml: + FuelConverterThermal: # TODO: update copied values (hyundai sonata hybrid) + heat_capacitance_joules_per_kelvin: 72132.17831078888 + length_for_convection_meters: 0.5427107485587468 + htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 + conductance_from_comb_watts_per_kelvin: 2178.965385428629 + max_frac_from_comb: 0.5 + tstat_te_sto_kelvin: 358.15 + tstat_te_delta_kelvin: 5.0 + tstat_interp: + data: + grid: + - v: 1 + dim: + - 2 + data: + - 85.0 + - 90.0 + values: + v: 1 + dim: + - 2 + data: + - 0.0 + - 1.0 + strategy: Linear + extrapolate: Clamp + radiator_effectiveness: 168.06311964877182 + fc_eff_model: + Exponential: + offset: 320.1873803210462 + lag: 24.998774179607892 + minimum: 0.1927168135089094 + mass_kilograms: ~ + specific_pwr_watts_per_kilogram: ~ + pwr_out_max_watts: 211088.0 + pwr_out_max_init_watts: 34604.59016393443 + pwr_ramp_lag_seconds: 2 # edited from 6.1 + eff_interp_from_pwr_out: + data: + grid: + - v: 1 + dim: + - 12 + data: + - 0.0 + - 0.005 + - 0.015 + - 0.04 + - 0.06 + - 0.1 + - 0.14 + - 0.2 + - 0.4 + - 0.6 + - 0.8 + - 1.0 + values: + v: 1 + dim: + - 12 + data: + - 0.0 + - 0.0875106035 + - 0.143482108 + - 0.216273855 + - 0.252599848 + - 0.301508117 + - 0.33 + - 0.34 + - 0.35 + - 0.34 + - 0.32 + - 0.3 + strategy: Linear + extrapolate: Error + pwr_idle_fuel_watts: 0.0 + state: + i: 0 + pwr_out_max_watts: 0.0 + pwr_prop_max_watts: 0.0 + eff: 0.0 + pwr_prop_watts: 0.0 + energy_prop_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_fuel_watts: 0.0 + energy_fuel_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + fc_on: false + time_on_seconds: 0.0 + history: + i: [] + pwr_out_max_watts: [] + pwr_prop_max_watts: [] + eff: [] + pwr_prop_watts: [] + energy_prop_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_fuel_watts: [] + energy_fuel_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + fc_on: [] + time_on_seconds: [] + save_interval: 1 + transmission: + mass_kilograms: ~ + eff_interp: 0.95 + state: + i: 0 + pwr_out_fwd_max_watts: 0.0 + pwr_out_regen_max_watts: 0.0 + eff: 0.0 + pwr_out_watts: 0.0 + energy_out_joules: 0.0 + pwr_in_watts: 0.0 + energy_in_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + history: + i: [] + pwr_out_fwd_max_watts: [] + pwr_out_regen_max_watts: [] + eff: [] + pwr_out_watts: [] + energy_out_joules: [] + pwr_in_watts: [] + energy_in_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + save_interval: 1 + mass_kilograms: ~ + alt_eff: 1.0 +chassis: + drag_coef: 0.3303036837542712 + frontal_area_square_meters: 3.05124164 + wheel_rr_coef: 0.0064798953284486704 + wheel_inertia_kilogram_square_meters: 0.815 + num_wheels: 4 + wheel_radius_meters: 0.36865 + tire_code: ~ + cg_height_meters: 0.53 + wheel_fric_coef: 0.8 + drive_type: FWD + drive_axle_weight_frac: 0.61 + wheel_base_meters: 3.08864 + mass_kilograms: ~ + glider_mass_kilograms: ~ + cargo_mass_kilograms: ~ +cabin: # TODO: update copied values (hyundai sonata hybrid) + LumpedCabin: + cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 + cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 + heat_capacitance_joules_per_kelvin: 133887.55278894224 + length_meters: 3.261651382829292 + width_meters: 1.86 +hvac: # TODO: update copied values (hyundai sonata hybrid) + LumpedCabin: + te_set_kelvin: 295.15 + te_deadband_kelvin: 0.5 + p_watts_per_kelvin: 489.34499608760177 + i: 36.77964270414921 + pwr_i_max_watts: 10000.0 + d: 5.0 + pwr_thrml_max_watts: 15000.0 + frac_of_ideal_cop: 0.0778419513178728 + heat_source: FuelConverter + pwr_aux_for_hvac_max_watts: 8000.0 +mass_kilograms: 2154.564 +pwr_aux_base_watts: 700.0 +save_interval: 1 +state: + i: 0 + time_seconds: 0.0 + pwr_prop_fwd_max_watts: 0.0 + pwr_prop_bwd_max_watts: 0.0 + pwr_tractive_watts: 0.0 + pwr_tractive_for_cyc_watts: 0.0 + energy_tractive_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_drag_watts: 0.0 + energy_drag_joules: 0.0 + pwr_accel_watts: 0.0 + energy_accel_joules: 0.0 + pwr_ascent_watts: 0.0 + energy_ascent_joules: 0.0 + pwr_rr_watts: 0.0 + energy_rr_joules: 0.0 + pwr_whl_inertia_watts: 0.0 + energy_whl_inertia_joules: 0.0 + pwr_brake_watts: 0.0 + energy_brake_joules: 0.0 + cyc_met: true + cyc_met_overall: true + speed_ach_meters_per_second: 0.0 + dist_meters: 0.0 + grade_curr: 0.0 + elev_curr_meters: 0.0 + air_density_kilograms_per_cubic_meter: 0.0 + mass_kilograms: .nan +history: + i: [] + time_seconds: [] + pwr_prop_fwd_max_watts: [] + pwr_prop_bwd_max_watts: [] + pwr_tractive_watts: [] + pwr_tractive_for_cyc_watts: [] + energy_tractive_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_drag_watts: [] + energy_drag_joules: [] + pwr_accel_watts: [] + energy_accel_joules: [] + pwr_ascent_watts: [] + energy_ascent_joules: [] + pwr_rr_watts: [] + energy_rr_joules: [] + pwr_whl_inertia_watts: [] + energy_whl_inertia_joules: [] + pwr_brake_watts: [] + energy_brake_joules: [] + cyc_met: [] + cyc_met_overall: [] + speed_ach_meters_per_second: [] + dist_meters: [] + grade_curr: [] + elev_curr_meters: [] + air_density_kilograms_per_cubic_meter: [] + mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml new file mode 100644 index 000000000..2392a2ec1 --- /dev/null +++ b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml @@ -0,0 +1,344 @@ +--- +name: 2026 Chrysler Pacifica Select (Thermal) +doc: ~ +year: 2026 +pt_type: + Conv: + fs: + pwr_out_max_watts: 2000000.0 + pwr_ramp_lag_seconds: 1.1 + energy_capacity_joules: 2305080000.0 + specific_energy_joules_per_kilogram: ~ + mass_kilograms: ~ + fc: + thrml: + FuelConverterThermal: + heat_capacitance_joules_per_kelvin: 72132.17831078888 + length_for_convection_meters: 0.5427107485587468 + htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 + conductance_from_comb_watts_per_kelvin: 2178.965385428629 + max_frac_from_comb: 0.5 + tstat_te_sto_kelvin: 358.15 + tstat_te_delta_kelvin: 5.0 + tstat_interp: + data: + grid: + - v: 1 + dim: + - 2 + data: + - 85.0 + - 90.0 + values: + v: 1 + dim: + - 2 + data: + - 0.0 + - 1.0 + strategy: Linear + extrapolate: Clamp + radiator_effectiveness: 168.06311964877182 + fc_eff_model: + Exponential: + offset: 320.1873803210462 + lag: 24.998774179607892 + minimum: 0.1927168135089094 + state: + i: 0 + te_adiabatic_kelvin: 3153.8328742654194 + temperature_kelvin: 295.15 + tstat_open_frac: 0.0 + htc_to_amb_watts_per_square_meter_kelvin: 0.0 + pwr_thrml_to_amb_watts: 0.0 + energy_thrml_to_amb_joules: 0.0 + eff_coeff: 1.0 + pwr_thrml_fc_to_cab_watts: 0.0 + energy_thrml_fc_to_cab_joules: 0.0 + pwr_fuel_as_heat_watts: 0.0 + energy_fuel_as_heat_joules: 0.0 + pwr_thrml_to_tm_watts: 0.0 + energy_thrml_to_tm_joules: 0.0 + history: + i: [] + te_adiabatic_kelvin: [] + temperature_kelvin: [] + tstat_open_frac: [] + htc_to_amb_watts_per_square_meter_kelvin: [] + pwr_thrml_to_amb_watts: [] + energy_thrml_to_amb_joules: [] + eff_coeff: [] + pwr_thrml_fc_to_cab_watts: [] + energy_thrml_fc_to_cab_joules: [] + pwr_fuel_as_heat_watts: [] + energy_fuel_as_heat_joules: [] + pwr_thrml_to_tm_watts: [] + energy_thrml_to_tm_joules: [] + save_interval: ~ + mass_kilograms: ~ + specific_pwr_watts_per_kilogram: ~ + pwr_out_max_watts: 211088.0 + pwr_out_max_init_watts: 34604.59016393443 + pwr_ramp_lag_seconds: 2.0 + eff_interp_from_pwr_out: + data: + grid: + - v: 1 + dim: + - 12 + data: + - 0.0 + - 0.005 + - 0.015 + - 0.04 + - 0.06 + - 0.1 + - 0.14 + - 0.2 + - 0.4 + - 0.6 + - 0.8 + - 1.0 + values: + v: 1 + dim: + - 12 + data: + - 0.0 + - 0.0875106035 + - 0.143482108 + - 0.216273855 + - 0.252599848 + - 0.301508117 + - 0.33 + - 0.34 + - 0.35 + - 0.34 + - 0.32 + - 0.3 + strategy: Linear + extrapolate: Error + pwr_idle_fuel_watts: 0.0 + state: + i: 0 + pwr_out_max_watts: 0.0 + pwr_prop_max_watts: 0.0 + eff: 0.0 + pwr_prop_watts: 0.0 + energy_prop_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_fuel_watts: 0.0 + energy_fuel_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + fc_on: false + time_on_seconds: 0.0 + history: + i: [] + pwr_out_max_watts: [] + pwr_prop_max_watts: [] + eff: [] + pwr_prop_watts: [] + energy_prop_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_fuel_watts: [] + energy_fuel_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + fc_on: [] + time_on_seconds: [] + save_interval: 1 + transmission: + mass_kilograms: ~ + eff_interp: 0.95 + state: + i: 0 + pwr_out_fwd_max_watts: 0.0 + pwr_out_regen_max_watts: 0.0 + eff: 0.0 + pwr_out_watts: 0.0 + energy_out_joules: 0.0 + pwr_in_watts: 0.0 + energy_in_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + history: + i: [] + pwr_out_fwd_max_watts: [] + pwr_out_regen_max_watts: [] + eff: [] + pwr_out_watts: [] + energy_out_joules: [] + pwr_in_watts: [] + energy_in_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + save_interval: 1 + pt_cntrl: Normal + dfco_cntrl: + dfco_enabled: true + minimum_dfco_speed_meters_per_second: 11.176 + minimum_dfco_deceleration_meters_per_second_squared: -0.2 + save_interval: ~ + state: + i: 0 + vehicle_dynamics_prevent_dfco: false + history: + i: [] + vehicle_dynamics_prevent_dfco: [] + mass_kilograms: ~ + alt_eff: 1.0 +chassis: + drag_coef: 0.3303036837542712 + frontal_area_square_meters: 3.05124164 + wheel_rr_coef: 0.0064798953284486704 + wheel_inertia_kilogram_square_meters: 0.815 + num_wheels: 4 + wheel_radius_meters: 0.36865 + tire_code: ~ + cg_height_meters: 0.53 + wheel_fric_coef: 0.8 + drive_type: FWD + drive_axle_weight_frac: 0.61 + wheel_base_meters: 3.08864 + mass_kilograms: ~ + glider_mass_kilograms: ~ + cargo_mass_kilograms: ~ +cabin: + LumpedCabin: + cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 + cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 + heat_capacitance_joules_per_kelvin: 133887.55278894224 + length_meters: 3.261651382829292 + width_meters: 1.86 + state: + i: 0 + temperature_kelvin: 295.15 + temp_prev_kelvin: 295.15 + pwr_thrml_from_hvac_watts: 0.0 + energy_thrml_from_hvac_joules: 0.0 + pwr_thrml_from_amb_watts: 0.0 + energy_thrml_from_amb_joules: 0.0 + pwr_thrml_to_res_watts: 0.0 + energy_thrml_to_res_joules: 0.0 + reynolds_for_plate: 0.0 + history: + i: [] + temperature_kelvin: [] + temp_prev_kelvin: [] + pwr_thrml_from_hvac_watts: [] + energy_thrml_from_hvac_joules: [] + pwr_thrml_from_amb_watts: [] + energy_thrml_from_amb_joules: [] + pwr_thrml_to_res_watts: [] + energy_thrml_to_res_joules: [] + reynolds_for_plate: [] + save_interval: ~ +hvac: + LumpedCabin: + te_set_kelvin: 295.15 + te_deadband_kelvin: 0.5 + p_watts_per_kelvin: 489.34499608760177 + i: 36.77964270414921 + pwr_i_max_watts: 10000.0 + d: 5.0 + pwr_thrml_max_watts: 15000.0 + frac_of_ideal_cop: 0.0778419513178728 + heat_source: FuelConverter + pwr_aux_for_hvac_max_watts: 8000.0 + state: + i: 0 + pwr_p_watts: 0.0 + energy_p_joules: 0.0 + pwr_i_watts: 0.0 + energy_i_joules: 0.0 + pwr_d_watts: 0.0 + energy_d_joules: 0.0 + cop: ~ + pwr_aux_for_hvac_watts: 0.0 + energy_aux_for_hvac_joules: 0.0 + pwr_thrml_hvac_to_cabin_watts: 0.0 + energy_thrml_hvac_to_cabin_joules: 0.0 + pwr_thrml_fc_to_cabin_watts: 0.0 + energy_thrml_fc_to_cabin_joules: 0.0 + history: + i: [] + pwr_p_watts: [] + energy_p_joules: [] + pwr_i_watts: [] + energy_i_joules: [] + pwr_d_watts: [] + energy_d_joules: [] + cop: [] + pwr_aux_for_hvac_watts: [] + energy_aux_for_hvac_joules: [] + pwr_thrml_hvac_to_cabin_watts: [] + energy_thrml_hvac_to_cabin_joules: [] + pwr_thrml_fc_to_cabin_watts: [] + energy_thrml_fc_to_cabin_joules: [] + save_interval: ~ +mass_kilograms: 2154.564 +pwr_aux_base_watts: 700.0 +save_interval: 1 +state: + i: 0 + time_seconds: 0.0 + pwr_prop_fwd_max_watts: 0.0 + pwr_prop_bwd_max_watts: 0.0 + pwr_tractive_watts: 0.0 + pwr_tractive_for_cyc_watts: 0.0 + energy_tractive_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_drag_watts: 0.0 + energy_drag_joules: 0.0 + pwr_accel_watts: 0.0 + energy_accel_joules: 0.0 + pwr_ascent_watts: 0.0 + energy_ascent_joules: 0.0 + pwr_rr_watts: 0.0 + energy_rr_joules: 0.0 + pwr_whl_inertia_watts: 0.0 + energy_whl_inertia_joules: 0.0 + pwr_brake_watts: 0.0 + energy_brake_joules: 0.0 + cyc_met: true + cyc_met_overall: true + speed_ach_meters_per_second: 0.0 + dist_meters: 0.0 + grade_curr: 0.0 + elev_curr_meters: 0.0 + air_density_kilograms_per_cubic_meter: 0.0 + mass_kilograms: .nan +history: + i: [] + time_seconds: [] + pwr_prop_fwd_max_watts: [] + pwr_prop_bwd_max_watts: [] + pwr_tractive_watts: [] + pwr_tractive_for_cyc_watts: [] + energy_tractive_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_drag_watts: [] + energy_drag_joules: [] + pwr_accel_watts: [] + energy_accel_joules: [] + pwr_ascent_watts: [] + energy_ascent_joules: [] + pwr_rr_watts: [] + energy_rr_joules: [] + pwr_whl_inertia_watts: [] + energy_whl_inertia_joules: [] + pwr_brake_watts: [] + energy_brake_joules: [] + cyc_met: [] + cyc_met_overall: [] + speed_ach_meters_per_second: [] + dist_meters: [] + grade_curr: [] + elev_curr_meters: [] + air_density_kilograms_per_cubic_meter: [] + mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml new file mode 100644 index 000000000..99f9c1a77 --- /dev/null +++ b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml @@ -0,0 +1,366 @@ +--- +name: 2026 Chrysler Pacifica Select (Thermal) +doc: ~ +year: 2026 +pt_type: + Conv: + fs: + pwr_out_max_watts: 2000000.0 + pwr_ramp_lag_seconds: 1.1 + energy_capacity_joules: 2305080000.0 + specific_energy_joules_per_kilogram: ~ + mass_kilograms: ~ + fc: + thrml: + FuelConverterThermal: + heat_capacitance_joules_per_kelvin: 72132.17831078888 + length_for_convection_meters: 0.5427107485587468 + htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 + conductance_from_comb_watts_per_kelvin: 2178.965385428629 + max_frac_from_comb: 0.5 + tstat_te_sto_kelvin: 358.15 + tstat_te_delta_kelvin: 5.0 + tstat_interp: + data: + grid: + - v: 1 + dim: + - 2 + data: + - 85.0 + - 90.0 + values: + v: 1 + dim: + - 2 + data: + - 0.0 + - 1.0 + strategy: Linear + extrapolate: Clamp + radiator_effectiveness: 168.06311964877182 + fc_eff_model: + Exponential: + offset: 320.1873803210462 + lag: 24.998774179607892 + minimum: 0.1927168135089094 + state: + i: 0 + te_adiabatic_kelvin: 3153.8328742654194 + temperature_kelvin: 295.15 + tstat_open_frac: 0.0 + htc_to_amb_watts_per_square_meter_kelvin: 0.0 + pwr_thrml_to_amb_watts: 0.0 + energy_thrml_to_amb_joules: 0.0 + eff_coeff: 1.0 + pwr_thrml_fc_to_cab_watts: 0.0 + energy_thrml_fc_to_cab_joules: 0.0 + pwr_fuel_as_heat_watts: 0.0 + energy_fuel_as_heat_joules: 0.0 + pwr_thrml_to_tm_watts: 0.0 + energy_thrml_to_tm_joules: 0.0 + history: + i: [] + te_adiabatic_kelvin: [] + temperature_kelvin: [] + tstat_open_frac: [] + htc_to_amb_watts_per_square_meter_kelvin: [] + pwr_thrml_to_amb_watts: [] + energy_thrml_to_amb_joules: [] + eff_coeff: [] + pwr_thrml_fc_to_cab_watts: [] + energy_thrml_fc_to_cab_joules: [] + pwr_fuel_as_heat_watts: [] + energy_fuel_as_heat_joules: [] + pwr_thrml_to_tm_watts: [] + energy_thrml_to_tm_joules: [] + save_interval: ~ + mass_kilograms: ~ + specific_pwr_watts_per_kilogram: ~ + pwr_out_max_watts: 211088.0 + pwr_out_max_init_watts: 34604.59016393443 + pwr_ramp_lag_seconds: 2.0 + eff_interp_from_pwr_out: + data: + grid: + - v: 1 + dim: + - 12 + data: + - 0.0 + - 0.005 + - 0.015 + - 0.04 + - 0.06 + - 0.1 + - 0.14 + - 0.2 + - 0.4 + - 0.6 + - 0.8 + - 1.0 + values: + v: 1 + dim: + - 12 + data: + - 0.0 + - 0.0875106035 + - 0.143482108 + - 0.216273855 + - 0.252599848 + - 0.301508117 + - 0.33 + - 0.34 + - 0.35 + - 0.34 + - 0.32 + - 0.3 + strategy: Linear + extrapolate: Error + pwr_idle_fuel_watts: 0.0 + state: + i: 0 + pwr_out_max_watts: 0.0 + pwr_prop_max_watts: 0.0 + eff: 0.0 + pwr_prop_watts: 0.0 + energy_prop_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_fuel_watts: 0.0 + energy_fuel_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + fc_on: false + time_on_seconds: 0.0 + history: + i: [] + pwr_out_max_watts: [] + pwr_prop_max_watts: [] + eff: [] + pwr_prop_watts: [] + energy_prop_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_fuel_watts: [] + energy_fuel_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + fc_on: [] + time_on_seconds: [] + save_interval: 1 + transmission: + mass_kilograms: ~ + eff_interp: 0.95 + state: + i: 0 + pwr_out_fwd_max_watts: 0.0 + pwr_out_regen_max_watts: 0.0 + eff: 0.0 + pwr_out_watts: 0.0 + energy_out_joules: 0.0 + pwr_in_watts: 0.0 + energy_in_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + history: + i: [] + pwr_out_fwd_max_watts: [] + pwr_out_regen_max_watts: [] + eff: [] + pwr_out_watts: [] + energy_out_joules: [] + pwr_in_watts: [] + energy_in_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + save_interval: 1 + pt_cntrl: + StopStart: + fc_min_time_on_seconds: 5.0 + temp_fc_forced_on_kelvin: 333.15 # 60 C + temp_fc_allowed_off_kelvin: 348.15 # 75 C + time_delay_after_stop_until_fc_can_turn_off_seconds: 0.0 + save_interval: ~ + state: + i: 0 + fc_temperature_too_low: false + vehicle_not_stopped: false + on_time_too_short: false + time_vehicle_stopped_seconds: 0.0 + vehicle_not_stopped_long_enough: false + has_traction_power_request: false + history: + i: [] + fc_temperature_too_low: [] + vehicle_not_stopped: [] + on_time_too_short: [] + time_vehicle_stopped_seconds: [] + vehicle_not_stopped_long_enough: [] + has_traction_power_request: [] + dfco_cntrl: + dfco_enabled: true + minimum_dfco_speed_meters_per_second: 11.176 + minimum_dfco_deceleration_meters_per_second_squared: -0.2 + save_interval: ~ + state: + i: 0 + vehicle_dynamics_prevent_dfco: false + history: + i: [] + vehicle_dynamics_prevent_dfco: [] + mass_kilograms: ~ + alt_eff: 1.0 +chassis: + drag_coef: 0.3303036837542712 + frontal_area_square_meters: 3.05124164 + wheel_rr_coef: 0.0064798953284486704 + wheel_inertia_kilogram_square_meters: 0.815 + num_wheels: 4 + wheel_radius_meters: 0.36865 + tire_code: ~ + cg_height_meters: 0.53 + wheel_fric_coef: 0.8 + drive_type: FWD + drive_axle_weight_frac: 0.61 + wheel_base_meters: 3.08864 + mass_kilograms: ~ + glider_mass_kilograms: ~ + cargo_mass_kilograms: ~ +cabin: + LumpedCabin: + cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 + cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 + heat_capacitance_joules_per_kelvin: 133887.55278894224 + length_meters: 3.261651382829292 + width_meters: 1.86 + state: + i: 0 + temperature_kelvin: 295.15 + temp_prev_kelvin: 295.15 + pwr_thrml_from_hvac_watts: 0.0 + energy_thrml_from_hvac_joules: 0.0 + pwr_thrml_from_amb_watts: 0.0 + energy_thrml_from_amb_joules: 0.0 + pwr_thrml_to_res_watts: 0.0 + energy_thrml_to_res_joules: 0.0 + reynolds_for_plate: 0.0 + history: + i: [] + temperature_kelvin: [] + temp_prev_kelvin: [] + pwr_thrml_from_hvac_watts: [] + energy_thrml_from_hvac_joules: [] + pwr_thrml_from_amb_watts: [] + energy_thrml_from_amb_joules: [] + pwr_thrml_to_res_watts: [] + energy_thrml_to_res_joules: [] + reynolds_for_plate: [] + save_interval: ~ +hvac: + LumpedCabin: + te_set_kelvin: 295.15 + te_deadband_kelvin: 0.5 + p_watts_per_kelvin: 489.34499608760177 + i: 36.77964270414921 + pwr_i_max_watts: 10000.0 + d: 5.0 + pwr_thrml_max_watts: 15000.0 + frac_of_ideal_cop: 0.0778419513178728 + heat_source: FuelConverter + pwr_aux_for_hvac_max_watts: 8000.0 + state: + i: 0 + pwr_p_watts: 0.0 + energy_p_joules: 0.0 + pwr_i_watts: 0.0 + energy_i_joules: 0.0 + pwr_d_watts: 0.0 + energy_d_joules: 0.0 + cop: ~ + pwr_aux_for_hvac_watts: 0.0 + energy_aux_for_hvac_joules: 0.0 + pwr_thrml_hvac_to_cabin_watts: 0.0 + energy_thrml_hvac_to_cabin_joules: 0.0 + pwr_thrml_fc_to_cabin_watts: 0.0 + energy_thrml_fc_to_cabin_joules: 0.0 + history: + i: [] + pwr_p_watts: [] + energy_p_joules: [] + pwr_i_watts: [] + energy_i_joules: [] + pwr_d_watts: [] + energy_d_joules: [] + cop: [] + pwr_aux_for_hvac_watts: [] + energy_aux_for_hvac_joules: [] + pwr_thrml_hvac_to_cabin_watts: [] + energy_thrml_hvac_to_cabin_joules: [] + pwr_thrml_fc_to_cabin_watts: [] + energy_thrml_fc_to_cabin_joules: [] + save_interval: ~ +mass_kilograms: 2154.564 +pwr_aux_base_watts: 700.0 +save_interval: 1 +state: + i: 0 + time_seconds: 0.0 + pwr_prop_fwd_max_watts: 0.0 + pwr_prop_bwd_max_watts: 0.0 + pwr_tractive_watts: 0.0 + pwr_tractive_for_cyc_watts: 0.0 + energy_tractive_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_drag_watts: 0.0 + energy_drag_joules: 0.0 + pwr_accel_watts: 0.0 + energy_accel_joules: 0.0 + pwr_ascent_watts: 0.0 + energy_ascent_joules: 0.0 + pwr_rr_watts: 0.0 + energy_rr_joules: 0.0 + pwr_whl_inertia_watts: 0.0 + energy_whl_inertia_joules: 0.0 + pwr_brake_watts: 0.0 + energy_brake_joules: 0.0 + cyc_met: true + cyc_met_overall: true + speed_ach_meters_per_second: 0.0 + dist_meters: 0.0 + grade_curr: 0.0 + elev_curr_meters: 0.0 + air_density_kilograms_per_cubic_meter: 0.0 + mass_kilograms: .nan +history: + i: [] + time_seconds: [] + pwr_prop_fwd_max_watts: [] + pwr_prop_bwd_max_watts: [] + pwr_tractive_watts: [] + pwr_tractive_for_cyc_watts: [] + energy_tractive_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_drag_watts: [] + energy_drag_joules: [] + pwr_accel_watts: [] + energy_accel_joules: [] + pwr_ascent_watts: [] + energy_ascent_joules: [] + pwr_rr_watts: [] + energy_rr_joules: [] + pwr_whl_inertia_watts: [] + energy_whl_inertia_joules: [] + pwr_brake_watts: [] + energy_brake_joules: [] + cyc_met: [] + cyc_met_overall: [] + speed_ach_meters_per_second: [] + dist_meters: [] + grade_curr: [] + elev_curr_meters: [] + air_density_kilograms_per_cubic_meter: [] + mass_kilograms: [] diff --git a/fastsim-core/src/five_cycle/mod.rs b/fastsim-core/src/five_cycle/mod.rs new file mode 100644 index 000000000..0fbb23f83 --- /dev/null +++ b/fastsim-core/src/five_cycle/mod.rs @@ -0,0 +1,742 @@ +use super::imports::*; +use super::prelude::*; + +use log; +use log::{Level, Metadata, Record}; +use log::{LevelFilter, SetLoggerError}; + +static LOGGER: SimpleLogger = SimpleLogger; + +struct SimpleLogger; + +impl log::Log for SimpleLogger { + fn enabled(&self, metadata: &Metadata) -> bool { + metadata.level() <= Level::Info + } + + fn log(&self, record: &Record) { + if self.enabled(record.metadata()) { + println!("{} - {}", record.level(), record.args()); + } + } + + fn flush(&self) {} +} + +pub fn init_logger(level: LevelFilter) -> Result<(), SetLoggerError> { + log::set_logger(&LOGGER).map(|()| log::set_max_level(level)) +} + +pub fn pct_error(actual: f64, expected: f64) -> f64 { + if expected == 0.0 { + f64::INFINITY + } else { + 100. * (actual - expected) / expected + } +} + +pub fn main(veh: &Vehicle) { + init_logger(LevelFilter::Warn).unwrap(); + + // Pacifica FE targets + // https://fueleconomy.gov/feg/Find.do?action=sbs&id=49434 + // label city FE + let target_city_fe = 18.9954; + // label highway FE + let target_highway_fe = 28.1266; + // label combined FE + let target_combined_fe = 22.2452; + + // let hfet_fe = hfet(veh.clone()); + // log::warn!("hfet_fe: {} MPG", hfet_fe); + // let (us06_city_fe, us06_highway_fe) = us06(veh.clone()); + // log::warn!("us06_city_fe: {} MPG", us06_city_fe); + // log::warn!("us06_highway_fe: {} MPG", us06_highway_fe); + // let sc03_fe = sc03(veh.clone()); + // log::warn!("sc03_fe: {} MPG", sc03_fe); + // let (bag_1_fe_20, bag_2_fe_20, bag_3_fe_20) = ftp( + // veh.clone(), + // (-6.66666667 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN, + // ); + // log::warn!("bag_1_fe_20: {} MPG", bag_1_fe_20); + // log::warn!("bag_2_fe_20: {} MPG", bag_2_fe_20); + // log::warn!("bag_3_fe_20: {} MPG", bag_3_fe_20); + // let (bag_1_fe_75, bag_2_fe_75, bag_3_fe_75) = + // ftp(veh.clone(), (23.8889 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN); + // log::warn!("bag_1_fe_75: {} MPG", bag_1_fe_75); + // log::warn!("bag_2_fe_75: {} MPG", bag_2_fe_75); + // log::warn!("bag_3_fe_75: {} MPG", bag_3_fe_75); + + // // City label FE + // // https://www.law.cornell.edu/cfr/text/40/600.114-12#a + // let running_fc = 0.82 * (0.48 / bag_2_fe_75 + 0.41 / bag_3_fe_75 + 0.11 / us06_city_fe) + // + 0.18 * (0.5 / bag_2_fe_20 + 0.5 / bag_3_fe_20) + // + 0.133 * 1.083 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); + // let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); + // let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); + // let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 4.1; + // let city_fe = 0.905 / (start_fc + running_fc); + // log::warn!("city_fe: {} MPG", city_fe); + + // // Highway label FE + // // https://www.law.cornell.edu/cfr/text/40/600.114-12#b + // let running_fc = 1.007 * (0.79 / us06_highway_fe + 0.21 / hfet_fe) + // + 0.133 * 0.377 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); + // let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); + // let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); + // let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 60.; + // let highway_fe = 0.905 / (start_fc + running_fc); + // log::warn!("highway_fe: {} MPG", highway_fe); + + // let combined_fe = 1.0 / (0.55 / city_fe + 0.45 / highway_fe); + // log::warn!("combined_fe: {} MPG", combined_fe); + + // let city_pct_error = pct_error(1. / city_fe, 1. / target_city_fe); + // let highway_pct_error = pct_error(1. / highway_fe, 1. / target_highway_fe); + // let combined_pct_error = pct_error(1. / combined_fe, 1. / target_combined_fe); + + // println!("Results:"); + // println!( + // " City:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + // city_fe, + // 1. / city_fe, + // target_city_fe, + // 1. / target_city_fe, + // city_pct_error + // ); + // println!( + // " Highway:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + // highway_fe, + // 1. / highway_fe, + // target_highway_fe, + // 1. / target_highway_fe, + // highway_pct_error + // ); + // println!( + // " Combined:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + // combined_fe, + // 1. / combined_fe, + // target_combined_fe, + // 1. / target_combined_fe, + // combined_pct_error + // ); + + let mut veh_no_thrml = + Vehicle::from_resource("2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml", false).unwrap(); + let (sdlabel_results, _) = + crate::simdrivelabel::get_label_fe(&mut veh_no_thrml, None, false, None, None, false) + .unwrap(); + + let city_pct_error = pct_error(1. / sdlabel_results.adj_udds_mpgge, 1. / target_city_fe); + let highway_pct_error = pct_error(1. / sdlabel_results.adj_hwy_mpgge, 1. / target_highway_fe); + let combined_pct_error = + pct_error(1. / sdlabel_results.adj_comb_mpgge, 1. / target_combined_fe); + + println!("Simdrivelabel results:"); + println!( + " City:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + sdlabel_results.adj_udds_mpgge, + 1. / sdlabel_results.adj_udds_mpgge, + target_city_fe, + 1. / target_city_fe, + city_pct_error + ); + println!( + " Highway:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + sdlabel_results.adj_hwy_mpgge, + 1. / sdlabel_results.adj_hwy_mpgge, + target_highway_fe, + 1. / target_highway_fe, + highway_pct_error + ); + println!( + " Combined:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + sdlabel_results.adj_comb_mpgge, + 1. / sdlabel_results.adj_comb_mpgge, + target_combined_fe, + 1. / target_combined_fe, + combined_pct_error + ); + + // TODO: + // - [x] merge in start-stop and DFCO + // - [x] run simdrivelabel on base (non-thermal) model + // - [ ] manual tweaking of thermal parameters - likely increase engine thermal mass +} + +pub fn hfet(mut veh: Vehicle) -> f64 { + let ambient_temp = (25. + uc::CELSIUS_TO_KELVIN) * uc::KELVIN; + // Set initial temperatures to ambient + set_cabin_temperature(&mut veh, ambient_temp).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut veh, ambient_temp).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut veh, ambient_temp).unwrap(); + } + let hfet = Cycle::from_resource("hwfet.csv", false).unwrap(); + + // Set up first simulation (cold start) + let mut sd0 = SimDrive::new(veh.clone(), hfet.clone(), None); + log::info!("Initial temperatures:"); + log_temperatures(&sd0.veh); + sd0.walk().unwrap(); // simulate + log::info!("Temperatures after preconditioning:"); + log_temperatures(&sd0.veh); + + // Set up idle simulation (15 seconds idle) + let idle = Cycle::try_from(crate::drive_cycle::CycleBuilder { + name: String::from("idle"), + time: (0..15) + .map(|t| (t as f64) * uc::S) + .collect::>(), + speed: vec![0.0 * uc::MPS; 15], + }) + .unwrap(); + let mut sd_idle = SimDrive::new(veh.clone(), idle, None); + // Set temperatures + set_cabin_temperature(&mut sd_idle.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd_idle.veh, get_fc_temperature(&sd0.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd_idle.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); + } + sd_idle.walk().unwrap(); // simulate + log::info!("Post-idle results:"); + log_temperatures(&sd_idle.veh); + output_energy(&sd_idle.veh); + + // Set up second simulation + let mut sd1 = SimDrive::new(veh.clone(), hfet, None); + // Set temperatures + set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd_idle.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd1.veh, get_fc_temperature(&sd_idle.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd1.veh, get_res_temperature(&sd_idle.veh).unwrap()).unwrap(); + } + sd1.walk().unwrap(); // simulate + log::info!("Final results:"); + log_temperatures(&sd1.veh); + output_energy(&sd1.veh); + + let hfet_fe = get_mpg(&sd1.veh); + + hfet_fe +} + +pub fn us06(mut veh: Vehicle) -> (f64, f64) { + let ambient_temp = (25. + uc::CELSIUS_TO_KELVIN) * uc::KELVIN; + // Set initial temperatures to ambient + set_cabin_temperature(&mut veh, ambient_temp).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut veh, ambient_temp).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut veh, ambient_temp).unwrap(); + } + + let us06 = Cycle::from_resource("us06.csv", false).unwrap(); + let us06_city_1 = Cycle::from_resource("us06_city_1.csv", false).unwrap(); + let us06_highway = Cycle::from_resource("us06_highway.csv", false).unwrap(); + let us06_city_2 = Cycle::from_resource("us06_city_2.csv", false).unwrap(); + + // Set up first simulation (cold start) + let mut sd0 = SimDrive::new(veh.clone(), us06.clone(), None); + log::info!("Initial temperatures:"); + log_temperatures(&sd0.veh); + sd0.walk().unwrap(); // simulate + log::info!("Temperatures after preconditioning:"); + log_temperatures(&sd0.veh); + + // Set up idle simulation (1 to 2 minutes idle) + let idle = Cycle::try_from(crate::drive_cycle::CycleBuilder { + name: String::from("idle"), + time: (0..90) + .map(|t| (t as f64) * uc::S) + .collect::>(), + speed: vec![0.0 * uc::MPS; 90], + }) + .unwrap(); + let mut sd_idle = SimDrive::new(veh.clone(), idle, None); + // Set temperatures + set_cabin_temperature(&mut sd_idle.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd_idle.veh, get_fc_temperature(&sd0.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd_idle.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); + } + sd_idle.walk().unwrap(); // simulate + log::info!("Post-idle results:"); + log_temperatures(&sd_idle.veh); + output_energy(&sd_idle.veh); + + // Set up second simulation, US06 first 'city' portion (1-130 sec) + let mut sd1 = SimDrive::new(veh.clone(), us06_city_1, None); + // Set temperatures + set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd_idle.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd1.veh, get_fc_temperature(&sd_idle.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd1.veh, get_res_temperature(&sd_idle.veh).unwrap()).unwrap(); + } + sd1.walk().unwrap(); // simulate + log::info!("Phase 1 results (city 1):"); + log_temperatures(&sd1.veh); + output_energy(&sd1.veh); + + // Set up third simulation, US06 'highway' portion (130-495 sec) + let mut sd2 = SimDrive::new(veh.clone(), us06_highway, None); + // Set temperatures + set_cabin_temperature(&mut sd2.veh, get_cabin_temperature(&sd1.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd2.veh, get_fc_temperature(&sd1.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd2.veh, get_res_temperature(&sd1.veh).unwrap()).unwrap(); + } + sd2.walk().unwrap(); // simulate + log::info!("Phase 2 results (highway):"); + log_temperatures(&sd2.veh); + output_energy(&sd2.veh); + + // Set up fourth simulation, US06 'city' portion (495-600 sec) + let mut sd3 = SimDrive::new(veh.clone(), us06_city_2, None); + // Set temperatures + set_cabin_temperature(&mut sd3.veh, get_cabin_temperature(&sd2.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd3.veh, get_fc_temperature(&sd2.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd3.veh, get_res_temperature(&sd2.veh).unwrap()).unwrap(); + } + sd3.walk().unwrap(); // simulate + log::info!("Phase 3 results (city 2):"); + log_temperatures(&sd3.veh); + output_energy(&sd3.veh); + + let us06_city_distance = *sd1.veh.state.dist.get_fresh(|| format_dbg!()).unwrap() + + *sd3.veh.state.dist.get_fresh(|| format_dbg!()).unwrap(); + let us06_city_fuel = get_fuel_used(&sd1.veh) + get_fuel_used(&sd3.veh); + let us06_city_mpg = us06_city_distance.get::() / us06_city_fuel.get::(); + + let us06_highway_mpg = get_mpg(&sd2.veh); + + (us06_city_mpg, us06_highway_mpg) +} + +pub fn sc03(mut veh: Vehicle) -> f64 { + let ambient_temp = (35. + uc::CELSIUS_TO_KELVIN) * uc::KELVIN; + // Set initial temperatures to ambient + set_cabin_temperature(&mut veh, ambient_temp).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut veh, ambient_temp).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut veh, ambient_temp).unwrap(); + } + + let udds = Cycle::from_resource("udds.csv", false).unwrap(); + let sc03 = Cycle::from_resource("sc03.csv", false).unwrap(); + + // First simulation (UDDS cold start) + let mut sd0 = SimDrive::new(veh.clone(), udds, None); + log::info!("Initial temperatures:"); + log_temperatures(&sd0.veh); + sd0.walk().unwrap(); // simulate + log::info!("Temperatures after preconditioning:"); + log_temperatures(&sd0.veh); + + // Engine-off soak (10 minutes) + let soak = Cycle::try_from(crate::drive_cycle::CycleBuilder { + name: String::from("soak"), + time: (0..600) + .map(|t| (t as f64) * uc::S) + .collect::>(), + speed: vec![0.0 * uc::MPS; 600], + }) + .unwrap(); + let mut sd_soak = SimDrive::new(veh.clone(), soak, None); + // Zero out aux load + sd_soak.veh.pwr_aux_base = 0.0 * uc::W; + // Set temperatures + set_cabin_temperature(&mut sd_soak.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd_soak.veh, get_fc_temperature(&sd0.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd_soak.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); + } + sd_soak.walk().unwrap(); // simulate + assert!(output_energy(&sd_soak.veh).get::() == 0.0); + log::info!("Post-soak temperatures:"); + log_temperatures(&sd_soak.veh); + + // Second simulation + let mut sd1 = SimDrive::new(veh.clone(), sc03.clone(), None); + // Set temperatures + set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd_soak.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd1.veh, get_fc_temperature(&sd_soak.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd1.veh, get_res_temperature(&sd_soak.veh).unwrap()).unwrap(); + } + sd1.walk().unwrap(); // simulate + log::info!("Final results:"); + log_temperatures(&sd1.veh); + output_energy(&sd1.veh); + + get_mpg(&sd1.veh) +} + +pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { + // Set initial temperatures to ambient + set_cabin_temperature(&mut veh, ambient_temp).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut veh, ambient_temp).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut veh, ambient_temp).unwrap(); + } + + let mut ftp_transient = Cycle::from_resource("ftp_transient.csv", false).unwrap(); + ftp_transient.temp_amb_air = vec![ambient_temp; ftp_transient.time.len()]; + let mut ftp_stabilized = Cycle::from_resource("ftp_stabilized.csv", false).unwrap(); + ftp_stabilized.temp_amb_air = vec![ambient_temp; ftp_stabilized.time.len()]; + + // First simulation (cold start transient) + let mut sd0 = SimDrive::new(veh.clone(), ftp_transient.clone(), None); + log::info!("Initial temperatures:"); + log_temperatures(&sd0.veh); + sd0.walk().unwrap(); // simulate + log::info!("Temperatures after cold start transient segment:"); + log_temperatures(&sd0.veh); + + // Second simulation (stabilized) + let mut sd1 = SimDrive::new(veh.clone(), ftp_stabilized.clone(), None); + // Set temperatures + set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd1.veh, get_fc_temperature(&sd0.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd1.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); + } + sd1.walk().unwrap(); // simulate + log::info!("Temperatures after stabilized segment:"); + log_temperatures(&sd1.veh); + + // Engine-off soak (10 minutes) + let soak = Cycle::try_from(crate::drive_cycle::CycleBuilder { + name: String::from("soak"), + time: (0..600) + .map(|t| (t as f64) * uc::S) + .collect::>(), + speed: vec![0.0 * uc::MPS; 600], + }) + .unwrap(); + let mut sd_soak = SimDrive::new(veh.clone(), soak, None); + // Zero out aux load + sd_soak.veh.pwr_aux_base = 0.0 * uc::W; + // Set temperatures + set_cabin_temperature(&mut sd_soak.veh, get_cabin_temperature(&sd1.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd_soak.veh, get_fc_temperature(&sd1.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd_soak.veh, get_res_temperature(&sd1.veh).unwrap()).unwrap(); + } + sd_soak.walk().unwrap(); // simulate + assert!(output_energy(&sd_soak.veh).get::() == 0.0); + log::info!("Temperatures after 10 minute soak:"); + log_temperatures(&sd_soak.veh); + + // Second simulation (transient) + let mut sd2 = SimDrive::new(veh.clone(), ftp_transient.clone(), None); + // Set temperatures + set_cabin_temperature(&mut sd2.veh, get_cabin_temperature(&sd_soak.veh).unwrap()).unwrap(); + if veh.fc().is_some() { + set_fc_temperature(&mut sd2.veh, get_fc_temperature(&sd_soak.veh).unwrap()).unwrap(); + } + if veh.res().is_some() { + set_res_temperature(&mut sd2.veh, get_res_temperature(&sd_soak.veh).unwrap()).unwrap(); + } + sd2.walk().unwrap(); // simulate + log::info!("Temperatures after hot start transient segment:"); + log_temperatures(&sd2.veh); + output_energy(&sd2.veh); + + let bag_1_fe_25 = get_mpg(&sd0.veh); + let bag_2_fe_25 = get_mpg(&sd1.veh); + let bag_3_fe_25 = get_mpg(&sd2.veh); + + (bag_1_fe_25, bag_2_fe_25, bag_3_fe_25) +} + +fn get_cabin_temperature(veh: &Vehicle) -> Option { + if let CabinOption::LumpedCabin(lc) = &veh.cabin { + return Some( + lc.state + .temperature + .get_fresh(|| format_dbg!()) + .unwrap() + .clone(), + ); + } + None +} + +fn get_fc_temperature(veh: &Vehicle) -> Option { + if let Some(fc) = veh.fc() { + if let FuelConverterThermalOption::FuelConverterThermal(thrml) = &fc.thrml { + return Some( + thrml + .state + .temperature + .get_fresh(|| format_dbg!()) + .unwrap() + .clone(), + ); + } + } + None +} + +// fn get_fc_temperature(veh: &Vehicle) -> Option { +// Some( +// *veh.fc()? +// .temperature()? +// .get_fresh(|| format_dbg!()) +// .unwrap(), +// ) +// } + +fn get_res_temperature(veh: &Vehicle) -> Option { + if let Some(res) = veh.res() { + if let RESThermalOption::RESLumpedThermal(thrml) = &res.thrml { + return Some( + thrml + .state + .temperature + .get_fresh(|| format_dbg!()) + .unwrap() + .clone(), + ); + } + } + None +} + +fn set_cabin_temperature( + veh: &mut Vehicle, + new_temperature: si::Temperature, +) -> anyhow::Result<()> { + match &mut veh.cabin { + CabinOption::LumpedCabin(thrml) => { + thrml + .state + .temperature + .update_unchecked(new_temperature, || format_dbg!())?; + thrml + .state + .temp_prev + .update_unchecked(new_temperature, || format_dbg!())?; + Ok(()) + } + opt @ _ => bail!("Unsupported cabin thermal option {opt:?}"), + } +} + +fn set_fc_temperature(veh: &mut Vehicle, new_temperature: si::Temperature) -> anyhow::Result<()> { + match &mut veh + .fc_mut() + .with_context(|| anyhow!("Vehicle has no fuel converter"))? + .thrml + { + FuelConverterThermalOption::FuelConverterThermal(thrml) => { + thrml + .state + .temperature + .update_unchecked(new_temperature, || format_dbg!())?; + Ok(()) + } + opt @ _ => bail!("Unsupported FC thermal option {opt:?}"), + } +} + +fn set_res_temperature(veh: &mut Vehicle, new_temperature: si::Temperature) -> anyhow::Result<()> { + match &mut veh + .res_mut() + .with_context(|| anyhow!("Vehicle has no RES"))? + .thrml + { + RESThermalOption::RESLumpedThermal(thrml) => { + thrml + .state + .temperature + .update_unchecked(new_temperature, || format_dbg!())?; + thrml + .state + .temp_prev + .update_unchecked(new_temperature, || format_dbg!())?; + Ok(()) + } + opt @ _ => bail!("Unsupported RES thermal option {opt:?}"), + } +} + +// Preconditioning: +// HFET: +// 1. Simulate HFET from cold start once +// 2. Simulate 15 seconds idle, starting with temperatures from end of step 1 +// 3. Simulate HFET again, starting with temperatures from end of step 2 +// US06: +// 1. Simulate US06 from cold start once +// 2. Simulate 1 to 2 minutes idle, starting with temperatures from end of step 1 +// 3. Simulate US06 again, starting with temperatures from end of step 2 +// SC03: +// 1. Simulate UDDS from cold start once +// 2. Simulate 10 minute engine-off soak, starting with temperatures from end of step 1 +// 3. Simulate SC03 again, starting with temperatures from end of step 2 +// FTP: +// 1. Simulate FTP from cold start once +// 2. Simulate 10 minute engine-off soak, starting with temperatures from end of step 1 +// 3. Simulate FTP again, starting with temperatures from end of step 2 + +fn log_temperatures(veh: &Vehicle) { + if let Some(temp) = get_cabin_temperature(veh) { + log::info!( + " cabin temperature: {} °C", + temp.get::() + ); + } + if let Some(temp) = get_fc_temperature(veh) { + log::info!( + " fuel converter temperature: {} °C", + temp.get::() + ); + } + if let Some(temp) = get_res_temperature(veh) { + log::info!( + " reversible energy storage temperature: {} °C", + temp.get::() + ); + } +} + +fn output_energy(veh: &Vehicle) -> si::Energy { + let fc_energy_opt = veh + .fc() + .map(|fc| fc.state.energy_fuel.get_fresh(|| format_dbg!()).unwrap()); + if let Some(fc_energy) = fc_energy_opt { + log::info!( + " total expended fuel converter energy: {} kWh", + fc_energy.get::() / 3.6e6 + ); + } + let res_energy_opt = veh.res().map(|res| { + res.state + .energy_out_chemical + .get_fresh(|| format_dbg!()) + .unwrap() + }); + if let Some(res_energy) = res_energy_opt { + log::info!( + " total expended battery energy (not including charger losses): {} kWh", + res_energy.get::() / 3.6e6 + ); + } + *fc_energy_opt.unwrap_or(&(0. * uc::J)) + *res_energy_opt.unwrap_or(&(0. * uc::J)) +} + +fn get_fuel_used(veh: &Vehicle) -> si::Volume { + let fc_energy_opt = veh + .fc() + .map(|fc| fc.state.energy_fuel.get_fresh(|| format_dbg!()).unwrap()); + let res_energy_opt = veh.res().map(|res| { + res.state + .energy_out_chemical + .get_fresh(|| format_dbg!()) + .unwrap() + }); + let energy = *fc_energy_opt.unwrap_or(&(0. * uc::J)) + *res_energy_opt.unwrap_or(&(0. * uc::J)); + energy / crate::simdrivelabel::FuelProperties::default().energy_density +} + +fn get_mpg(veh: &Vehicle) -> f64 { + // Distance + let distance = veh.state.dist.get_fresh(|| format_dbg!()).unwrap(); + let fuel_used = get_fuel_used(veh); + let mpg = distance.get::() / fuel_used.get::(); + mpg +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_main() { + let veh = Vehicle::from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", + false, + ) + .unwrap(); + main(&veh); + } + + #[test] + fn test_hfet() { + let veh = Vehicle::from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", + false, + ) + .unwrap(); + hfet(veh); + } + + #[test] + fn test_us06() { + let veh = Vehicle::from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", + false, + ) + .unwrap(); + us06(veh); + } + + #[test] + fn test_sc03() { + let veh = Vehicle::from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", + false, + ) + .unwrap(); + sc03(veh); + } + + #[test] + fn test_ftp_cold() { + let veh = Vehicle::from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", + false, + ) + .unwrap(); + ftp(veh, (-6.66666667 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN); + } + + #[test] + fn test_ftp() { + let veh = Vehicle::from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", + false, + ) + .unwrap(); + ftp(veh, (23.8889 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN); + } +} diff --git a/fastsim-core/src/lib.rs b/fastsim-core/src/lib.rs index 4d3661e89..f3e8c1d71 100755 --- a/fastsim-core/src/lib.rs +++ b/fastsim-core/src/lib.rs @@ -26,6 +26,7 @@ pub mod gas_properties; pub mod imports; pub mod prelude; // #[cfg(feature = "pyo3")] -- feature gate provided inside module +pub mod five_cycle; pub mod pyo3; pub mod si; pub mod simdrive; diff --git a/fastsim-core/src/vehicle/vehicle_model.rs b/fastsim-core/src/vehicle/vehicle_model.rs index e98a26af3..e3f0ebdc4 100644 --- a/fastsim-core/src/vehicle/vehicle_model.rs +++ b/fastsim-core/src/vehicle/vehicle_model.rs @@ -156,6 +156,59 @@ impl Vehicle { #[pyo3(name = "use_stop_start_controller")] fn use_stop_start_controller_py(&mut self) -> anyhow::Result<()> { + self.use_stop_start_controller() + } + + #[pyo3(name = "use_normal_controller")] + fn use_normal_controller_py(&mut self) -> anyhow::Result<()> { + self.use_normal_controller() + } + + #[pyo3(name = "set_dfco_params")] + fn set_dfco_params_py( + &mut self, + enabled: bool, + min_dfco_speed_m_per_s: f64, + max_accel_for_dfco_m_per_s2: f64, + ) -> anyhow::Result<()> { + self.set_dfco_params(enabled, min_dfco_speed_m_per_s, max_accel_for_dfco_m_per_s2) + } +} + +/// implementing constructor function for Vehicle +impl Vehicle { + /// Create new Vehicle with specified parameters + pub fn new( + name: String, + doc: Option, + year: u32, + pt_type: PowertrainType, + chassis: Chassis, + cabin: CabinOption, + hvac: HVACOption, + mass: Option, + pwr_aux_base: si::Power, + save_interval: Option, + ) -> anyhow::Result { + let mut veh = Self { + name, + doc, + year, + pt_type, + chassis, + cabin, + hvac, + mass, + pwr_aux_base, + state: VehicleState::default(), + history: VehicleStateHistoryVec::default(), + save_interval, + }; + veh.init()?; + Ok(veh) + } + + pub fn use_stop_start_controller(&mut self) -> anyhow::Result<()> { match &mut self.pt_type { PowertrainType::ConventionalVehicle(veh) => { match veh.pt_cntrl { @@ -195,8 +248,7 @@ impl Vehicle { Ok(()) } - #[pyo3(name = "use_normal_controller")] - fn use_normal_controller_py(&mut self) -> anyhow::Result<()> { + pub fn use_normal_controller(&mut self) -> anyhow::Result<()> { let save_interval = self.save_interval().unwrap_or(Option::None); match &mut self.pt_type { PowertrainType::ConventionalVehicle(conv) => match &conv.pt_cntrl { @@ -234,8 +286,7 @@ impl Vehicle { Ok(()) } - #[pyo3(name = "set_dfco_params")] - fn set_dfco_params_py( + pub fn set_dfco_params( &mut self, enabled: bool, min_dfco_speed_m_per_s: f64, @@ -256,40 +307,6 @@ impl Vehicle { } } -/// implementing constructor function for Vehicle -impl Vehicle { - /// Create new Vehicle with specified parameters - pub fn new( - name: String, - doc: Option, - year: u32, - pt_type: PowertrainType, - chassis: Chassis, - cabin: CabinOption, - hvac: HVACOption, - mass: Option, - pwr_aux_base: si::Power, - save_interval: Option, - ) -> anyhow::Result { - let mut veh = Self { - name, - doc, - year, - pt_type, - chassis, - cabin, - hvac, - mass, - pwr_aux_base, - state: VehicleState::default(), - history: VehicleStateHistoryVec::default(), - save_interval, - }; - veh.init()?; - Ok(veh) - } -} - impl Mass for Vehicle { fn mass(&self) -> anyhow::Result> { let derived_mass = self @@ -1606,7 +1623,7 @@ pub(crate) mod tests { let veh_result = make_conv_pacifica(false, false); assert!(veh_result.is_ok()); let mut veh = veh_result.unwrap(); - let use_result = veh.use_stop_start_controller_py(); + let use_result = veh.use_stop_start_controller(); assert!(use_result.is_ok()); match &veh.pt_type { PowertrainType::ConventionalVehicle(conv) => match conv.pt_cntrl { @@ -1619,7 +1636,7 @@ pub(crate) mod tests { assert!(false, "Unexpected powertrain type"); } } - let normal_result = veh.use_normal_controller_py(); + let normal_result = veh.use_normal_controller(); assert!(normal_result.is_ok()); match &veh.pt_type { PowertrainType::ConventionalVehicle(conv) => match conv.pt_cntrl { @@ -1639,7 +1656,7 @@ pub(crate) mod tests { let veh_result = make_microhybrid_pacifica(); assert!(veh_result.is_ok()); let mut veh = veh_result.unwrap(); - let use_result = veh.use_normal_controller_py(); + let use_result = veh.use_normal_controller(); assert!(use_result.is_ok()); match &veh.pt_type { PowertrainType::HybridElectricVehicle(hev) => match &hev.pt_cntrl { @@ -1652,7 +1669,7 @@ pub(crate) mod tests { assert!(false, "Unexpected powertrain type"); } } - let use_ss_result = veh.use_stop_start_controller_py(); + let use_ss_result = veh.use_stop_start_controller(); assert!(use_ss_result.is_ok()); match &veh.pt_type { PowertrainType::HybridElectricVehicle(hev) => match &hev.pt_cntrl { From b3eddad1fdc4a3ec9d989563b19a3f9aa61cf10e Mon Sep 17 00:00:00 2001 From: Kyle Carow Date: Tue, 5 May 2026 15:01:48 -0600 Subject: [PATCH 2/5] demo for dummy minivan thermal model --- fastsim-core/Cargo.toml | 2 +- ...acifica_Select_Thermal_DFCO_StopStart.yaml | 12 +- .../vehicles/dummy_minivan_thrml.yaml | 366 ++++++++++++++++++ fastsim-core/src/five_cycle/mod.rs | 158 ++++---- python/fastsim/demos/demo_minivan_thrml.py | 109 ++++++ python/fastsim/demos/plot_utils.py | 179 ++++++++- 6 files changed, 738 insertions(+), 88 deletions(-) create mode 100644 fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml create mode 100644 python/fastsim/demos/demo_minivan_thrml.py diff --git a/fastsim-core/Cargo.toml b/fastsim-core/Cargo.toml index 85bee91d6..6c8e6cb55 100644 --- a/fastsim-core/Cargo.toml +++ b/fastsim-core/Cargo.toml @@ -56,10 +56,10 @@ approx = "0.5.1" thiserror = { workspace = true } typenum = "1.18.0" num-traits = "0.2.19" +log = "0.4.29" [dev-dependencies] pretty_assertions = "1.4.1" -log = "0.4.29" [features] default = ["resources", "serde-default", "simdrivelabel"] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml index 99f9c1a77..11cbcb2c1 100644 --- a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml +++ b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml @@ -13,8 +13,8 @@ pt_type: fc: thrml: FuelConverterThermal: - heat_capacitance_joules_per_kelvin: 72132.17831078888 - length_for_convection_meters: 0.5427107485587468 + heat_capacitance_joules_per_kelvin: 200000 # 72132.17831078888 + length_for_convection_meters: 0.7 # 0.5427107485587468 htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 conductance_from_comb_watts_per_kelvin: 2178.965385428629 max_frac_from_comb: 0.5 @@ -38,7 +38,7 @@ pt_type: - 1.0 strategy: Linear extrapolate: Clamp - radiator_effectiveness: 168.06311964877182 + radiator_effectiveness: 300 # 168.06311964877182 fc_eff_model: Exponential: offset: 320.1873803210462 @@ -232,9 +232,9 @@ cabin: LumpedCabin: cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 - heat_capacitance_joules_per_kelvin: 133887.55278894224 - length_meters: 3.261651382829292 - width_meters: 1.86 + heat_capacitance_joules_per_kelvin: 250000 # 133887.55278894224 + length_meters: 3.302 # 130 in. estimate + width_meters: 2.02184 # Pacifica width w/o mirrors state: i: 0 temperature_kelvin: 295.15 diff --git a/fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml b/fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml new file mode 100644 index 000000000..11cbcb2c1 --- /dev/null +++ b/fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml @@ -0,0 +1,366 @@ +--- +name: 2026 Chrysler Pacifica Select (Thermal) +doc: ~ +year: 2026 +pt_type: + Conv: + fs: + pwr_out_max_watts: 2000000.0 + pwr_ramp_lag_seconds: 1.1 + energy_capacity_joules: 2305080000.0 + specific_energy_joules_per_kilogram: ~ + mass_kilograms: ~ + fc: + thrml: + FuelConverterThermal: + heat_capacitance_joules_per_kelvin: 200000 # 72132.17831078888 + length_for_convection_meters: 0.7 # 0.5427107485587468 + htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 + conductance_from_comb_watts_per_kelvin: 2178.965385428629 + max_frac_from_comb: 0.5 + tstat_te_sto_kelvin: 358.15 + tstat_te_delta_kelvin: 5.0 + tstat_interp: + data: + grid: + - v: 1 + dim: + - 2 + data: + - 85.0 + - 90.0 + values: + v: 1 + dim: + - 2 + data: + - 0.0 + - 1.0 + strategy: Linear + extrapolate: Clamp + radiator_effectiveness: 300 # 168.06311964877182 + fc_eff_model: + Exponential: + offset: 320.1873803210462 + lag: 24.998774179607892 + minimum: 0.1927168135089094 + state: + i: 0 + te_adiabatic_kelvin: 3153.8328742654194 + temperature_kelvin: 295.15 + tstat_open_frac: 0.0 + htc_to_amb_watts_per_square_meter_kelvin: 0.0 + pwr_thrml_to_amb_watts: 0.0 + energy_thrml_to_amb_joules: 0.0 + eff_coeff: 1.0 + pwr_thrml_fc_to_cab_watts: 0.0 + energy_thrml_fc_to_cab_joules: 0.0 + pwr_fuel_as_heat_watts: 0.0 + energy_fuel_as_heat_joules: 0.0 + pwr_thrml_to_tm_watts: 0.0 + energy_thrml_to_tm_joules: 0.0 + history: + i: [] + te_adiabatic_kelvin: [] + temperature_kelvin: [] + tstat_open_frac: [] + htc_to_amb_watts_per_square_meter_kelvin: [] + pwr_thrml_to_amb_watts: [] + energy_thrml_to_amb_joules: [] + eff_coeff: [] + pwr_thrml_fc_to_cab_watts: [] + energy_thrml_fc_to_cab_joules: [] + pwr_fuel_as_heat_watts: [] + energy_fuel_as_heat_joules: [] + pwr_thrml_to_tm_watts: [] + energy_thrml_to_tm_joules: [] + save_interval: ~ + mass_kilograms: ~ + specific_pwr_watts_per_kilogram: ~ + pwr_out_max_watts: 211088.0 + pwr_out_max_init_watts: 34604.59016393443 + pwr_ramp_lag_seconds: 2.0 + eff_interp_from_pwr_out: + data: + grid: + - v: 1 + dim: + - 12 + data: + - 0.0 + - 0.005 + - 0.015 + - 0.04 + - 0.06 + - 0.1 + - 0.14 + - 0.2 + - 0.4 + - 0.6 + - 0.8 + - 1.0 + values: + v: 1 + dim: + - 12 + data: + - 0.0 + - 0.0875106035 + - 0.143482108 + - 0.216273855 + - 0.252599848 + - 0.301508117 + - 0.33 + - 0.34 + - 0.35 + - 0.34 + - 0.32 + - 0.3 + strategy: Linear + extrapolate: Error + pwr_idle_fuel_watts: 0.0 + state: + i: 0 + pwr_out_max_watts: 0.0 + pwr_prop_max_watts: 0.0 + eff: 0.0 + pwr_prop_watts: 0.0 + energy_prop_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_fuel_watts: 0.0 + energy_fuel_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + fc_on: false + time_on_seconds: 0.0 + history: + i: [] + pwr_out_max_watts: [] + pwr_prop_max_watts: [] + eff: [] + pwr_prop_watts: [] + energy_prop_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_fuel_watts: [] + energy_fuel_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + fc_on: [] + time_on_seconds: [] + save_interval: 1 + transmission: + mass_kilograms: ~ + eff_interp: 0.95 + state: + i: 0 + pwr_out_fwd_max_watts: 0.0 + pwr_out_regen_max_watts: 0.0 + eff: 0.0 + pwr_out_watts: 0.0 + energy_out_joules: 0.0 + pwr_in_watts: 0.0 + energy_in_joules: 0.0 + pwr_loss_watts: 0.0 + energy_loss_joules: 0.0 + history: + i: [] + pwr_out_fwd_max_watts: [] + pwr_out_regen_max_watts: [] + eff: [] + pwr_out_watts: [] + energy_out_joules: [] + pwr_in_watts: [] + energy_in_joules: [] + pwr_loss_watts: [] + energy_loss_joules: [] + save_interval: 1 + pt_cntrl: + StopStart: + fc_min_time_on_seconds: 5.0 + temp_fc_forced_on_kelvin: 333.15 # 60 C + temp_fc_allowed_off_kelvin: 348.15 # 75 C + time_delay_after_stop_until_fc_can_turn_off_seconds: 0.0 + save_interval: ~ + state: + i: 0 + fc_temperature_too_low: false + vehicle_not_stopped: false + on_time_too_short: false + time_vehicle_stopped_seconds: 0.0 + vehicle_not_stopped_long_enough: false + has_traction_power_request: false + history: + i: [] + fc_temperature_too_low: [] + vehicle_not_stopped: [] + on_time_too_short: [] + time_vehicle_stopped_seconds: [] + vehicle_not_stopped_long_enough: [] + has_traction_power_request: [] + dfco_cntrl: + dfco_enabled: true + minimum_dfco_speed_meters_per_second: 11.176 + minimum_dfco_deceleration_meters_per_second_squared: -0.2 + save_interval: ~ + state: + i: 0 + vehicle_dynamics_prevent_dfco: false + history: + i: [] + vehicle_dynamics_prevent_dfco: [] + mass_kilograms: ~ + alt_eff: 1.0 +chassis: + drag_coef: 0.3303036837542712 + frontal_area_square_meters: 3.05124164 + wheel_rr_coef: 0.0064798953284486704 + wheel_inertia_kilogram_square_meters: 0.815 + num_wheels: 4 + wheel_radius_meters: 0.36865 + tire_code: ~ + cg_height_meters: 0.53 + wheel_fric_coef: 0.8 + drive_type: FWD + drive_axle_weight_frac: 0.61 + wheel_base_meters: 3.08864 + mass_kilograms: ~ + glider_mass_kilograms: ~ + cargo_mass_kilograms: ~ +cabin: + LumpedCabin: + cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 + cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 + heat_capacitance_joules_per_kelvin: 250000 # 133887.55278894224 + length_meters: 3.302 # 130 in. estimate + width_meters: 2.02184 # Pacifica width w/o mirrors + state: + i: 0 + temperature_kelvin: 295.15 + temp_prev_kelvin: 295.15 + pwr_thrml_from_hvac_watts: 0.0 + energy_thrml_from_hvac_joules: 0.0 + pwr_thrml_from_amb_watts: 0.0 + energy_thrml_from_amb_joules: 0.0 + pwr_thrml_to_res_watts: 0.0 + energy_thrml_to_res_joules: 0.0 + reynolds_for_plate: 0.0 + history: + i: [] + temperature_kelvin: [] + temp_prev_kelvin: [] + pwr_thrml_from_hvac_watts: [] + energy_thrml_from_hvac_joules: [] + pwr_thrml_from_amb_watts: [] + energy_thrml_from_amb_joules: [] + pwr_thrml_to_res_watts: [] + energy_thrml_to_res_joules: [] + reynolds_for_plate: [] + save_interval: ~ +hvac: + LumpedCabin: + te_set_kelvin: 295.15 + te_deadband_kelvin: 0.5 + p_watts_per_kelvin: 489.34499608760177 + i: 36.77964270414921 + pwr_i_max_watts: 10000.0 + d: 5.0 + pwr_thrml_max_watts: 15000.0 + frac_of_ideal_cop: 0.0778419513178728 + heat_source: FuelConverter + pwr_aux_for_hvac_max_watts: 8000.0 + state: + i: 0 + pwr_p_watts: 0.0 + energy_p_joules: 0.0 + pwr_i_watts: 0.0 + energy_i_joules: 0.0 + pwr_d_watts: 0.0 + energy_d_joules: 0.0 + cop: ~ + pwr_aux_for_hvac_watts: 0.0 + energy_aux_for_hvac_joules: 0.0 + pwr_thrml_hvac_to_cabin_watts: 0.0 + energy_thrml_hvac_to_cabin_joules: 0.0 + pwr_thrml_fc_to_cabin_watts: 0.0 + energy_thrml_fc_to_cabin_joules: 0.0 + history: + i: [] + pwr_p_watts: [] + energy_p_joules: [] + pwr_i_watts: [] + energy_i_joules: [] + pwr_d_watts: [] + energy_d_joules: [] + cop: [] + pwr_aux_for_hvac_watts: [] + energy_aux_for_hvac_joules: [] + pwr_thrml_hvac_to_cabin_watts: [] + energy_thrml_hvac_to_cabin_joules: [] + pwr_thrml_fc_to_cabin_watts: [] + energy_thrml_fc_to_cabin_joules: [] + save_interval: ~ +mass_kilograms: 2154.564 +pwr_aux_base_watts: 700.0 +save_interval: 1 +state: + i: 0 + time_seconds: 0.0 + pwr_prop_fwd_max_watts: 0.0 + pwr_prop_bwd_max_watts: 0.0 + pwr_tractive_watts: 0.0 + pwr_tractive_for_cyc_watts: 0.0 + energy_tractive_joules: 0.0 + pwr_aux_watts: 0.0 + energy_aux_joules: 0.0 + pwr_drag_watts: 0.0 + energy_drag_joules: 0.0 + pwr_accel_watts: 0.0 + energy_accel_joules: 0.0 + pwr_ascent_watts: 0.0 + energy_ascent_joules: 0.0 + pwr_rr_watts: 0.0 + energy_rr_joules: 0.0 + pwr_whl_inertia_watts: 0.0 + energy_whl_inertia_joules: 0.0 + pwr_brake_watts: 0.0 + energy_brake_joules: 0.0 + cyc_met: true + cyc_met_overall: true + speed_ach_meters_per_second: 0.0 + dist_meters: 0.0 + grade_curr: 0.0 + elev_curr_meters: 0.0 + air_density_kilograms_per_cubic_meter: 0.0 + mass_kilograms: .nan +history: + i: [] + time_seconds: [] + pwr_prop_fwd_max_watts: [] + pwr_prop_bwd_max_watts: [] + pwr_tractive_watts: [] + pwr_tractive_for_cyc_watts: [] + energy_tractive_joules: [] + pwr_aux_watts: [] + energy_aux_joules: [] + pwr_drag_watts: [] + energy_drag_joules: [] + pwr_accel_watts: [] + energy_accel_joules: [] + pwr_ascent_watts: [] + energy_ascent_joules: [] + pwr_rr_watts: [] + energy_rr_joules: [] + pwr_whl_inertia_watts: [] + energy_whl_inertia_joules: [] + pwr_brake_watts: [] + energy_brake_joules: [] + cyc_met: [] + cyc_met_overall: [] + speed_ach_meters_per_second: [] + dist_meters: [] + grade_curr: [] + elev_curr_meters: [] + air_density_kilograms_per_cubic_meter: [] + mass_kilograms: [] diff --git a/fastsim-core/src/five_cycle/mod.rs b/fastsim-core/src/five_cycle/mod.rs index 0fbb23f83..df2669235 100644 --- a/fastsim-core/src/five_cycle/mod.rs +++ b/fastsim-core/src/five_cycle/mod.rs @@ -36,7 +36,7 @@ pub fn pct_error(actual: f64, expected: f64) -> f64 { } pub fn main(veh: &Vehicle) { - init_logger(LevelFilter::Warn).unwrap(); + init_logger(LevelFilter::Info).unwrap(); // Pacifica FE targets // https://fueleconomy.gov/feg/Find.do?action=sbs&id=49434 @@ -47,79 +47,84 @@ pub fn main(veh: &Vehicle) { // label combined FE let target_combined_fe = 22.2452; - // let hfet_fe = hfet(veh.clone()); - // log::warn!("hfet_fe: {} MPG", hfet_fe); - // let (us06_city_fe, us06_highway_fe) = us06(veh.clone()); - // log::warn!("us06_city_fe: {} MPG", us06_city_fe); - // log::warn!("us06_highway_fe: {} MPG", us06_highway_fe); - // let sc03_fe = sc03(veh.clone()); - // log::warn!("sc03_fe: {} MPG", sc03_fe); - // let (bag_1_fe_20, bag_2_fe_20, bag_3_fe_20) = ftp( - // veh.clone(), - // (-6.66666667 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN, - // ); - // log::warn!("bag_1_fe_20: {} MPG", bag_1_fe_20); - // log::warn!("bag_2_fe_20: {} MPG", bag_2_fe_20); - // log::warn!("bag_3_fe_20: {} MPG", bag_3_fe_20); - // let (bag_1_fe_75, bag_2_fe_75, bag_3_fe_75) = - // ftp(veh.clone(), (23.8889 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN); - // log::warn!("bag_1_fe_75: {} MPG", bag_1_fe_75); - // log::warn!("bag_2_fe_75: {} MPG", bag_2_fe_75); - // log::warn!("bag_3_fe_75: {} MPG", bag_3_fe_75); - - // // City label FE - // // https://www.law.cornell.edu/cfr/text/40/600.114-12#a - // let running_fc = 0.82 * (0.48 / bag_2_fe_75 + 0.41 / bag_3_fe_75 + 0.11 / us06_city_fe) - // + 0.18 * (0.5 / bag_2_fe_20 + 0.5 / bag_3_fe_20) - // + 0.133 * 1.083 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); - // let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); - // let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); - // let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 4.1; - // let city_fe = 0.905 / (start_fc + running_fc); - // log::warn!("city_fe: {} MPG", city_fe); - - // // Highway label FE - // // https://www.law.cornell.edu/cfr/text/40/600.114-12#b - // let running_fc = 1.007 * (0.79 / us06_highway_fe + 0.21 / hfet_fe) - // + 0.133 * 0.377 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); - // let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); - // let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); - // let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 60.; - // let highway_fe = 0.905 / (start_fc + running_fc); - // log::warn!("highway_fe: {} MPG", highway_fe); - - // let combined_fe = 1.0 / (0.55 / city_fe + 0.45 / highway_fe); - // log::warn!("combined_fe: {} MPG", combined_fe); - - // let city_pct_error = pct_error(1. / city_fe, 1. / target_city_fe); - // let highway_pct_error = pct_error(1. / highway_fe, 1. / target_highway_fe); - // let combined_pct_error = pct_error(1. / combined_fe, 1. / target_combined_fe); - - // println!("Results:"); - // println!( - // " City:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", - // city_fe, - // 1. / city_fe, - // target_city_fe, - // 1. / target_city_fe, - // city_pct_error - // ); - // println!( - // " Highway:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", - // highway_fe, - // 1. / highway_fe, - // target_highway_fe, - // 1. / target_highway_fe, - // highway_pct_error - // ); - // println!( - // " Combined:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", - // combined_fe, - // 1. / combined_fe, - // target_combined_fe, - // 1. / target_combined_fe, - // combined_pct_error - // ); + log::info!("HFET"); + let hfet_fe = hfet(veh.clone()); + log::warn!("hfet_fe: {} MPG", hfet_fe); + log::info!("US06"); + let (us06_city_fe, us06_highway_fe) = us06(veh.clone()); + log::warn!("us06_city_fe: {} MPG", us06_city_fe); + log::warn!("us06_highway_fe: {} MPG", us06_highway_fe); + log::info!("SC03"); + let sc03_fe = sc03(veh.clone()); + log::warn!("sc03_fe: {} MPG", sc03_fe); + log::info!("FTP Cold"); + let (bag_1_fe_20, bag_2_fe_20, bag_3_fe_20) = ftp( + veh.clone(), + (-6.66666667 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN, + ); + log::warn!("bag_1_fe_20: {} MPG", bag_1_fe_20); + log::warn!("bag_2_fe_20: {} MPG", bag_2_fe_20); + log::warn!("bag_3_fe_20: {} MPG", bag_3_fe_20); + log::info!("FTP"); + let (bag_1_fe_75, bag_2_fe_75, bag_3_fe_75) = + ftp(veh.clone(), (23.8889 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN); + log::warn!("bag_1_fe_75: {} MPG", bag_1_fe_75); + log::warn!("bag_2_fe_75: {} MPG", bag_2_fe_75); + log::warn!("bag_3_fe_75: {} MPG", bag_3_fe_75); + + // City label FE + // https://www.law.cornell.edu/cfr/text/40/600.114-12#a + let running_fc = 0.82 * (0.48 / bag_2_fe_75 + 0.41 / bag_3_fe_75 + 0.11 / us06_city_fe) + + 0.18 * (0.5 / bag_2_fe_20 + 0.5 / bag_3_fe_20) + + 0.133 * 1.083 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); + let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); + let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); + let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 4.1; + let city_fe = 0.905 / (start_fc + running_fc); + log::warn!("city_fe: {} MPG", city_fe); + + // Highway label FE + // https://www.law.cornell.edu/cfr/text/40/600.114-12#b + let running_fc = 1.007 * (0.79 / us06_highway_fe + 0.21 / hfet_fe) + + 0.133 * 0.377 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); + let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); + let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); + let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 60.; + let highway_fe = 0.905 / (start_fc + running_fc); + log::warn!("highway_fe: {} MPG", highway_fe); + + let combined_fe = 1.0 / (0.55 / city_fe + 0.45 / highway_fe); + log::warn!("combined_fe: {} MPG", combined_fe); + + let city_pct_error = pct_error(1. / city_fe, 1. / target_city_fe); + let highway_pct_error = pct_error(1. / highway_fe, 1. / target_highway_fe); + let combined_pct_error = pct_error(1. / combined_fe, 1. / target_combined_fe); + + println!("Five cycle results:"); + println!( + " City:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + city_fe, + 1. / city_fe, + target_city_fe, + 1. / target_city_fe, + city_pct_error + ); + println!( + " Highway:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + highway_fe, + 1. / highway_fe, + target_highway_fe, + 1. / target_highway_fe, + highway_pct_error + ); + println!( + " Combined:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", + combined_fe, + 1. / combined_fe, + target_combined_fe, + 1. / target_combined_fe, + combined_pct_error + ); let mut veh_no_thrml = Vehicle::from_resource("2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml", false).unwrap(); @@ -692,6 +697,7 @@ mod tests { #[test] fn test_hfet() { + init_logger(LevelFilter::Info).unwrap(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -702,6 +708,7 @@ mod tests { #[test] fn test_us06() { + init_logger(LevelFilter::Info).unwrap(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -712,6 +719,7 @@ mod tests { #[test] fn test_sc03() { + init_logger(LevelFilter::Info).unwrap(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -722,6 +730,7 @@ mod tests { #[test] fn test_ftp_cold() { + init_logger(LevelFilter::Info).unwrap(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -732,6 +741,7 @@ mod tests { #[test] fn test_ftp() { + init_logger(LevelFilter::Info).unwrap(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, diff --git a/python/fastsim/demos/demo_minivan_thrml.py b/python/fastsim/demos/demo_minivan_thrml.py new file mode 100644 index 000000000..24f698af1 --- /dev/null +++ b/python/fastsim/demos/demo_minivan_thrml.py @@ -0,0 +1,109 @@ +"""Dummy paratransit minivan thermal demo, showcasing how to set initial temperatures for thermal components and visualize results.""" + +# %% +# Imports +import time + +import seaborn as sns + +import fastsim as fsim +from fastsim.demos.plot_utils import ( + plot_conv_fc_energy, + plot_conv_fc_pwr, + plot_conv_temperatures, + plot_road_loads, +) + +sns.set_theme() + +CELCIUS_TO_KELVIN = 273.15 + + +# %% +SHOW_PLOTS = True +SAVE_FIGS = False + + +def set_initial_temperature(veh: fsim.Vehicle, temp_celcius: float) -> fsim.Vehicle: + """Set temperature for all thermal components in the vehicle.""" + temp_kelvin = temp_celcius + CELCIUS_TO_KELVIN + veh_dict = veh.to_pydict() + veh_dict["cabin"]["LumpedCabin"]["state"]["temperature_kelvin"] = temp_kelvin + pt_type = "Conv" if "Conv" in veh_dict["pt_type"] else None + assert ( + pt_type == "Conv" + ), "this utility function is currently only set up for conventional vehicles" + # veh_dict["pt_type"]["HEV"]["res"]["thrml"]["RESLumpedThermal"]["state"][ + # "temperature_kelvin" + # ] = temp_kelvin + veh_dict["pt_type"]["Conv"]["fc"]["thrml"]["FuelConverterThermal"]["state"][ + "temperature_kelvin" + ] = temp_kelvin + return fsim.Vehicle.from_pydict(veh_dict) + + +def set_hvac_target_temperature(veh: fsim.Vehicle, temp_celcius: float) -> fsim.Vehicle: + temp_kelvin = temp_celcius + CELCIUS_TO_KELVIN + veh_dict = veh.to_pydict() + veh_dict["hvac"]["LumpedCabin"]["te_set_kelvin"] = temp_kelvin + return fsim.Vehicle.from_pydict(veh_dict) + + +def set_ambient_temperature(cyc: fsim.Cycle, temp_celcius: float) -> fsim.Cycle: + temp_kelvin = temp_celcius + CELCIUS_TO_KELVIN + cyc_dict = cyc.to_pydict() + cyc_dict["temp_amb_air_kelvin"] = [temp_kelvin] * len(cyc_dict["time_seconds"]) + return fsim.Cycle.from_pydict(cyc_dict) + + +# `fastsim3` -- load vehicle and cycle, build simulation, and run +# %% +# Temperature at which to initialize thermal components +initial_temperature_c = 19 +hvac_target_temperature_c = 22 +ambient_temperature_c = 29 + +# Load vehicle from resource file & set initial temperature +veh = fsim.Vehicle.from_resource( + "dummy_minivan_thrml.yaml", +) +veh = set_initial_temperature(veh, initial_temperature_c) +veh = set_hvac_target_temperature(veh, hvac_target_temperature_c) + +# Save interval: record every Nth time step (default is 1, meaning every time step is saved) +# Defaults to 1 if left unspecified +veh.set_save_interval(1) + +# Load vehicle from resource file & set initial temperature +# load cycle from file +cyc = fsim.Cycle.from_resource("udds.csv") +cyc = set_ambient_temperature(cyc, ambient_temperature_c) + +# instantiate `SimDrive` simulation object +sd = fsim.SimDrive(veh, cyc) + +# simulation start time +t0 = time.perf_counter() +# run simulation +sd.walk() +# simulation end time +t1 = time.perf_counter() +t_fsim3_si1 = t1 - t0 +print( + f"fastsim-3 `sd.walk()` elapsed time with `save_interval` of 1:\n{t_fsim3_si1:.2e} s" +) + +# %% +df = sd.to_dataframe() +sd_dict = sd.to_pydict(flatten=True) +# # Visualize results +fig_fc_pwr, ax_fc_pwr = plot_conv_fc_pwr(df, save_figs=SAVE_FIGS, show_plots=SHOW_PLOTS) +fig_fc_energy, ax_fc_energy = plot_conv_fc_energy( + df, save_figs=SAVE_FIGS, show_plots=SHOW_PLOTS +) +fig_temps, ax_temps = plot_conv_temperatures( + df, save_figs=SAVE_FIGS, show_plots=SHOW_PLOTS +) +fig, ax = plot_road_loads(df, veh, save_figs=SAVE_FIGS, show_plots=SHOW_PLOTS) + +# %% diff --git a/python/fastsim/demos/plot_utils.py b/python/fastsim/demos/plot_utils.py index 73b9a3aba..350cd82d4 100644 --- a/python/fastsim/demos/plot_utils.py +++ b/python/fastsim/demos/plot_utils.py @@ -91,7 +91,8 @@ def plot_bev_temperatures( ) ax[0].plot( df["cyc.time_seconds"], - df["veh.pt_type.BEV.res.thrml." + "RESLumpedThermal.history.temperature_kelvin"] - 273.15, + df["veh.pt_type.BEV.res.thrml." + "RESLumpedThermal.history.temperature_kelvin"] + - 273.15, label="res", ) ax[0].plot( @@ -124,7 +125,9 @@ def plot_bev_temperatures( return fig, ax -def plot_bev_hvac_pwr(df: pd.DataFrame, save_figs: bool, show_plots: bool) -> tuple[Figure, Axes]: +def plot_bev_hvac_pwr( + df: pd.DataFrame, save_figs: bool, show_plots: bool +) -> tuple[Figure, Axes]: """Plot BEV HVAC power consumption over time.""" fig, ax = plt.subplots(2, 1, sharex=True, figsize=figsize_3_stacked) plt.suptitle("Thermal Management Power Demand") @@ -175,7 +178,9 @@ def plot_bev_hvac_pwr(df: pd.DataFrame, save_figs: bool, show_plots: bool) -> tu return fig, ax -def plot_bev_res_pwr(df: pd.DataFrame, save_figs: bool, show_plots: bool) -> tuple[Figure, Axes]: +def plot_bev_res_pwr( + df: pd.DataFrame, save_figs: bool, show_plots: bool +) -> tuple[Figure, Axes]: """Plot BEV reversible energy storage power over time.""" fig, ax = plt.subplots(3, 1, sharex=True, figsize=figsize_3_stacked) plt.suptitle("Reversible Energy Storage Power") @@ -222,7 +227,9 @@ def plot_bev_res_pwr(df: pd.DataFrame, save_figs: bool, show_plots: bool) -> tup return fig, ax -def plot_bev_res_energy(df: pd.DataFrame, save_figs: bool, show_plots: bool) -> tuple[Figure, Axes]: +def plot_bev_res_energy( + df: pd.DataFrame, save_figs: bool, show_plots: bool +) -> tuple[Figure, Axes]: """Plot BEV reversible energy storage energy over time.""" fig, ax = plt.subplots(3, 1, sharex=True, figsize=figsize_3_stacked) plt.suptitle("Reversible Energy Storage Energy") @@ -230,7 +237,8 @@ def plot_bev_res_energy(df: pd.DataFrame, save_figs: bool, show_plots: bool) -> ax[0].set_prop_cycle(get_paired_cycler()) ax[0].plot( df["cyc.time_seconds"], - df["veh.pt_type.BEV.res.history.energy_out_electrical_joules"] / 2.77778e-7, # J to kWh + df["veh.pt_type.BEV.res.history.energy_out_electrical_joules"] + / 2.77778e-7, # J to kWh label="electrical out", ) ax[0].set_ylabel("RES Energy [kWh]") @@ -317,6 +325,159 @@ def plot_road_loads( return fig, ax +def plot_conv_temperatures( + df: pd.DataFrame, + save_figs: bool, + show_plots: bool, +) -> tuple[Figure, Axes]: + """Plot Conv component temperatures including battery, engine, and cabin.""" + fig, ax = plt.subplots(2, 1, sharex=True, figsize=figsize_3_stacked) + plt.suptitle("Component Temperatures") + + ax[0].set_prop_cycle(get_uni_cycler()) + ax[0].plot( + df["cyc.time_seconds"], + df["cyc.temp_amb_air_kelvin"] - 273.15, + label="amb", + ) + ax[0].plot( + df["cyc.time_seconds"], + df["veh.cabin.LumpedCabin.history.temperature_kelvin"] - 273.15, + label="cabin", + ) + ax[0].plot( + df["cyc.time_seconds"], + df[ + "veh.pt_type.Conv.fc.thrml." + + "FuelConverterThermal.history.temperature_kelvin" + ] + - 273.15, + label="fc", + ) + ax[0].set_ylabel("Temperatures [°C]") + ax[0].legend() + + ax[-1].set_prop_cycle(get_paired_cycler()) + ax[-1].plot( + df["cyc.time_seconds"], + df["veh.history.speed_ach_meters_per_second"], + label="ach", + ) + ax[-1].legend() + ax[-1].set_xlabel("Time [s]") + ax[-1].set_ylabel("Ach Speed [m/s]") + x_min, x_max = ax[-1].get_xlim()[0], ax[-1].get_xlim()[1] + x_max = (x_max - x_min) * 1.15 + ax[-1].set_xlim([x_min, x_max]) + + plt.tight_layout() + if save_figs: + plt.savefig(Path("./plots/temps.svg")) + if show_plots: + plt.show() + + return fig, ax + + +def plot_conv_fc_pwr( + df: pd.DataFrame, + save_figs: bool, + show_plots: bool, +) -> tuple[Figure, Axes]: + """Plot Conv fuel converter powers""" + fig, ax = plt.subplots(2, 1, sharex=True, figsize=figsize_3_stacked) + plt.suptitle("Fuel Converter Power") + + ax[0].set_prop_cycle(get_paired_cycler()) + ax[0].plot( + df["cyc.time_seconds"], + ( + df["veh.pt_type.Conv.fc.history.pwr_prop_watts"] + + df["veh.pt_type.Conv.fc.history.pwr_aux_watts"] + ) + / 1e3, + label="shaft", + ) + ax[0].plot( + df["cyc.time_seconds"], + df["veh.pt_type.Conv.fc.history.pwr_fuel_watts"] / 1e3, + label="fuel", + ) + ax[0].set_ylabel("FC Power [kW]") + ax[0].legend() + + ax[-1].set_prop_cycle(get_paired_cycler()) + ax[-1].plot( + df["cyc.time_seconds"], + df["veh.history.speed_ach_meters_per_second"], + label="ach", + ) + ax[-1].legend() + ax[-1].set_xlabel("Time [s]") + ax[-1].set_ylabel("Ach Speed [m/s]") + x_min, x_max = ax[-1].get_xlim()[0], ax[-1].get_xlim()[1] + x_max = (x_max - x_min) * 1.15 + ax[-1].set_xlim([x_min, x_max]) + + plt.tight_layout() + if save_figs: + plt.savefig(Path("./plots/fc_pwr.svg")) + if show_plots: + plt.show() + + return fig, ax + + +def plot_conv_fc_energy( + df: pd.DataFrame, + save_figs: bool, + show_plots: bool, +) -> tuple[Figure, Axes]: + """Plot Conv fuel converter energy consumption over time.""" + fig, ax = plt.subplots(2, 1, sharex=True, figsize=figsize_3_stacked) + plt.suptitle("Fuel Converter Energy") + + ax[0].set_prop_cycle(get_paired_cycler()) + ax[0].plot( + df["cyc.time_seconds"], + ( + df["veh.pt_type.Conv.fc.history.energy_prop_joules"] + + df["veh.pt_type.Conv.fc.history.energy_aux_joules"] + ) + / 1e6, + label="shaft", + ) + ax[0].plot( + df["cyc.time_seconds"], + df["veh.pt_type.Conv.fc.history.energy_fuel_joules"] / 1e6, + label="fuel", + ) + ax[0].set_ylabel("FC Energy [MJ]") + ax[0].legend() + + ax[-1].set_prop_cycle(get_paired_cycler()) + ax[-1].plot( + df["cyc.time_seconds"], + df["veh.history.speed_ach_meters_per_second"], + label="ach", + ) + ax[-1].legend() + ax[-1].set_xlabel("Time [s]") + ax[-1].set_ylabel("Ach Speed [m/s]") + x_min, x_max = ax[-1].get_xlim()[0], ax[-1].get_xlim()[1] + x_max = (x_max - x_min) * 1.15 + ax[-1].set_xlim([x_min, x_max]) + + plt.tight_layout() + + if save_figs: + plt.savefig(Path("./plots/fc_energy.svg")) + if show_plots: + plt.show() + + return fig, ax + + def plot_hev_temperatures( df: pd.DataFrame, save_figs: bool, @@ -339,12 +500,16 @@ def plot_hev_temperatures( ) ax[0].plot( df["cyc.time_seconds"], - df["veh.pt_type.HEV.res.thrml." + "RESLumpedThermal.history.temperature_kelvin"] - 273.15, + df["veh.pt_type.HEV.res.thrml." + "RESLumpedThermal.history.temperature_kelvin"] + - 273.15, label="res", ) ax[0].plot( df["cyc.time_seconds"], - df["veh.pt_type.HEV.fc.thrml." + "FuelConverterThermal.history.temperature_kelvin"] + df[ + "veh.pt_type.HEV.fc.thrml." + + "FuelConverterThermal.history.temperature_kelvin" + ] - 273.15, label="fc", ) From 381ee42bc8c7ef07725fb0e406bc06b061ec87fc Mon Sep 17 00:00:00 2001 From: Kyle Carow Date: Wed, 13 May 2026 14:33:08 -0600 Subject: [PATCH 3/5] pacifica opt script built out --- cal_and_val/thermal/cal_pacifica.py | 259 ++++++++++++++++++++++++++++ fastsim-core/src/five_cycle/mod.rs | 117 +++++++------ fastsim-py/src/lib.rs | 6 +- 3 files changed, 328 insertions(+), 54 deletions(-) create mode 100644 cal_and_val/thermal/cal_pacifica.py diff --git a/cal_and_val/thermal/cal_pacifica.py b/cal_and_val/thermal/cal_pacifica.py new file mode 100644 index 000000000..571a419e8 --- /dev/null +++ b/cal_and_val/thermal/cal_pacifica.py @@ -0,0 +1,259 @@ +# %% +# Imports + +from copy import deepcopy + +import numpy as np +from scipy.optimize import differential_evolution + +import fastsim as fsim + + +def relative_error(actual: float, expected: float) -> float: + return (actual - expected) / expected + + +SHOW_INTERMEDIATE_OUTPUT = False + + +# %% +# Setters +# The 'set_' prefix is stripped when parsing parameter names + + +def set_fc_thrml_heat_capacitance_j_per_k(veh_dict: dict, new_val: float) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ + "heat_capacitance_joules_per_kelvin" + ] = new_val + return veh_dict + + +def set_fc_thrml_length_for_convection_m(veh_dict: dict, new_val: float) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ + "length_for_convection_meters" + ] = new_val + return veh_dict + + +def set_fc_thrml_htc_to_amb_stop_w_per_m2_k(veh_dict: dict, new_val: float) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ + "htc_to_amb_stop_watts_per_square_meter_kelvin" + ] = new_val + return veh_dict + + +def set_fc_thrml_conductance_from_comb_w_per_k(veh_dict: dict, new_val: float) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ + "conductance_from_comb_watts_per_kelvin" + ] = new_val + return veh_dict + + +def set_fc_thrml_radiator_effectiveness(veh_dict: dict, new_val: float) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ + "radiator_effectiveness" + ] = new_val + return veh_dict + + +def set_cab_shell_htc_w_per_m2_k(veh_dict: dict, new_val: float) -> dict: + veh_dict["cabin"]["LumpedCabin"][ + "cab_shell_htc_to_amb_watts_per_square_meter_kelvin" + ] = new_val + return veh_dict + + +def set_hvac_frac_of_ideal_cop(veh_dict: dict, new_val: float) -> dict: + veh_dict["hvac"]["LumpedCabin"]["frac_of_ideal_cop"] = new_val + return veh_dict + + +# fc_eff_model parameters +def set_fc_thrml_fc_eff_model_exponential_offset( + veh_dict: dict, new_val: float +) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"]["fc_eff_model"][ + "Exponential" + ]["offset"] = new_val + return veh_dict + + +def set_fc_thrml_fc_eff_model_exponential_lag(veh_dict: dict, new_val: float) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"]["fc_eff_model"][ + "Exponential" + ]["lag"] = new_val + return veh_dict + + +def set_fc_thrml_fc_eff_model_exponential_minimum( + veh_dict: dict, new_val: float +) -> dict: + veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"]["fc_eff_model"][ + "Exponential" + ]["minimum"] = new_val + return veh_dict + + +# %% +# Targets +TARGET_CITY_MPG = 18.9954 +TARGET_HWY_MPG = 28.1266 + +TARGET_CITY_GAL_PER_MILE = 1 / TARGET_CITY_MPG +TARGET_HWY_GAL_PER_MILE = 1 / TARGET_HWY_MPG + +PT_TYPE = "Conv" + +# Load the base vehicle once; all evaluations copy from this dict. +veh_base = fsim.Vehicle.from_resource( + "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml" +) +veh_base_dict = veh_base.to_pydict() + +# %% +# Parameters +# (parameter setter function, lower bound, upper bound) +PARAM_REGISTRY: list[tuple] = [ + (set_fc_thrml_heat_capacitance_j_per_k, 50_000.0, 300_000.0), + # (set_fc_thrml_length_for_convection_m, 1.0, 3.0), # TODO: causes error + (set_fc_thrml_htc_to_amb_stop_w_per_m2_k, 5.0, 100.0), + (set_fc_thrml_conductance_from_comb_w_per_k, 5.0, 5_000.0), + (set_fc_thrml_radiator_effectiveness, 3.0, 300.0), + (set_cab_shell_htc_w_per_m2_k, 10.0, 250.0), + (set_hvac_frac_of_ideal_cop, 0.05, 0.35), + # fc_eff_model parameters + (set_fc_thrml_fc_eff_model_exponential_offset, 220.0, 350.0), + (set_fc_thrml_fc_eff_model_exponential_lag, 10.0, 60.0), + (set_fc_thrml_fc_eff_model_exponential_minimum, 0.15, 0.35), +] +PARAM_NAMES = [fn.__name__.removeprefix("set_") for fn, *_ in PARAM_REGISTRY] +BOUNDS = [(lb, ub) for _, lb, ub in PARAM_REGISTRY] + +# %% +# Objective function + + +def run_five_cycle( + veh: fsim.Vehicle, logging: bool = False +) -> tuple[float, float, float, float]: + city_mpg, hwy_mpg, comb_mpg = fsim.five_cycle(veh, logging=logging) + + # Calculate error in terms of gal/mile + city_gal_per_mi = 1 / city_mpg + hwy_gal_per_mi = 1 / hwy_mpg + + err_city = relative_error(city_gal_per_mi, TARGET_CITY_GAL_PER_MILE) + err_hwy = relative_error(hwy_gal_per_mi, TARGET_HWY_GAL_PER_MILE) + err_comb = relative_error( + 1 / comb_mpg, 1 / ((TARGET_CITY_MPG + TARGET_HWY_MPG) / 2) + ) + # Calculate error using only city and highway error + obj_val = err_city**2 + err_hwy**2 + + return city_mpg, hwy_mpg, comb_mpg, err_city, err_hwy, err_comb, obj_val + + +def calculate_error(xs: np.ndarray) -> float: + """ + Run five_cycle function and return sum of square errors + """ + veh_dict = deepcopy(veh_base_dict) + for (setter_fn, _, _), val in zip(PARAM_REGISTRY, xs): + veh_dict = setter_fn(veh_dict, val) + + veh = fsim.Vehicle.from_pydict(veh_dict, skip_init=False) + city_mpg, hwy_mpg, comb_mpg, err_city, err_hwy, err_comb, obj_val = run_five_cycle( + veh + ) + + param_strs = ", ".join(f"{name} = {v:.4g}" for name, v in zip(PARAM_NAMES, xs)) + if SHOW_INTERMEDIATE_OUTPUT: + print( + f" [{param_strs}] " + f"city = {city_mpg:.4f} mpg ({100 * err_city:+.2f}%) " + f"highway = {hwy_mpg:.4f} mpg ({100 * err_hwy:+.2f}%) " + f"combined = {comb_mpg:.4f} mpg ({100 * err_comb:+.2f}%) " + f"obj = {obj_val:.6f}" + ) + return obj_val + + +# %% +# Main function + +if __name__ == "__main__": + # Print initial info + print(f"Targets: city = {TARGET_CITY_MPG} mpg, hwy = {TARGET_HWY_MPG} mpg") + print(f"Optimizing {len(PARAM_REGISTRY)} parameter(s):") + for name, (lb, ub) in zip(PARAM_NAMES, BOUNDS): + print(f" {name}: [{lb:.4g}, {ub:.4g}]") + print() + + # Optimize + print("\n── Optimization Output ──────────────────────────────────────────────────") + if not SHOW_INTERMEDIATE_OUTPUT: + print("(output suppressed)...") + result = differential_evolution( + calculate_error, + bounds=BOUNDS, + seed=42, + tol=1e-4, + atol=1e-6, + maxiter=200, + popsize=5, + disp=SHOW_INTERMEDIATE_OUTPUT, + workers=1, + ) + + # Show parameter with asterisk * if parameter is close to either bound + BOUND_TOL = 0.05 # within 5% of bound + near_bound = [] + for val, (lb, ub) in zip(result.x, BOUNDS): + bound_range = ub - lb + if (val - lb) / bound_range < BOUND_TOL or (ub - val) / bound_range < BOUND_TOL: + near_bound.append(True) + else: + near_bound.append(False) + asterisks = ["*" if near else "" for near in near_bound] + + # Print results + print("\n── Optimization Result ──────────────────────────────────────────────────") + print(f"Message: {result.message}") + ( + _city_mpg, + _hwy_mpg, + _combined_mpg, + _err_city, + _err_hwy, + _err_comb, + unopt_obj_val, + ) = run_five_cycle(veh_base) + print(f"Objective value (unoptimized): {unopt_obj_val:.6f}") + print(f"Objective value (final): {result.fun:.6f}") + print("\nOptimal parameters:") + for name, val, (lb, ub), asterisk in zip(PARAM_NAMES, result.x, BOUNDS, asterisks): + print(f" {asterisk}{name}: {val:.6g} (bounds: [{lb:.4g}, {ub:.4g}])") + + # Final evaluation with logging enabled + print("\nFinal five_cycle run:") + veh_dict_final = deepcopy(veh_base_dict) + for (setter_fn, *_), val in zip(PARAM_REGISTRY, result.x): + veh_dict_final = setter_fn(veh_dict_final, val) + veh_final = fsim.Vehicle.from_pydict(veh_dict_final, skip_init=False) + city_mpg, hwy_mpg, combined_mpg, err_city, err_hwy, err_comb, obj_val = ( + run_five_cycle(veh_final) + ) + print(f" city = {city_mpg:.4f} mpg ({100 * err_city:+.2f}%)") + print(f" hwy = {hwy_mpg:.4f} mpg ({100 * err_hwy:+.2f}%)") + print(f" combined = {combined_mpg:.4f} mpg ({100 * err_comb:+.2f}%)") + + +# %% +# TODO: +# - [ ] revisit base model - apply script to non-thermal model & run simdrivelabel +# - [ ] sanity check parameter bounds +# - [ ] bug fix for characteristic length - nonzero fuel energy during soak + +# full size buses +# - [ ] dust off Altoona pipeline work to get base model +# - goal is to calibrate thermal model to match FleetDNA data diff --git a/fastsim-core/src/five_cycle/mod.rs b/fastsim-core/src/five_cycle/mod.rs index df2669235..ec4f41af3 100644 --- a/fastsim-core/src/five_cycle/mod.rs +++ b/fastsim-core/src/five_cycle/mod.rs @@ -35,8 +35,17 @@ pub fn pct_error(actual: f64, expected: f64) -> f64 { } } -pub fn main(veh: &Vehicle) { - init_logger(LevelFilter::Info).unwrap(); +#[cfg(feature = "pyo3")] +#[pyfunction(name = "five_cycle")] +#[cfg_attr( + feature = "pyo3", + pyo3(signature = ( + veh, logging=false)) +)] +pub fn five_cycle(veh: &Vehicle, logging: bool) -> (f64, f64, f64) { + if logging { + init_logger(LevelFilter::Info).unwrap(); + } // Pacifica FE targets // https://fueleconomy.gov/feg/Find.do?action=sbs&id=49434 @@ -47,30 +56,30 @@ pub fn main(veh: &Vehicle) { // label combined FE let target_combined_fe = 22.2452; - log::info!("HFET"); + log::debug!("HFET"); let hfet_fe = hfet(veh.clone()); - log::warn!("hfet_fe: {} MPG", hfet_fe); - log::info!("US06"); + log::info!("hfet_fe: {} MPG", hfet_fe); + log::debug!("US06"); let (us06_city_fe, us06_highway_fe) = us06(veh.clone()); - log::warn!("us06_city_fe: {} MPG", us06_city_fe); - log::warn!("us06_highway_fe: {} MPG", us06_highway_fe); - log::info!("SC03"); + log::info!("us06_city_fe: {} MPG", us06_city_fe); + log::info!("us06_highway_fe: {} MPG", us06_highway_fe); + log::debug!("SC03"); let sc03_fe = sc03(veh.clone()); - log::warn!("sc03_fe: {} MPG", sc03_fe); - log::info!("FTP Cold"); + log::info!("sc03_fe: {} MPG", sc03_fe); + log::debug!("FTP Cold"); let (bag_1_fe_20, bag_2_fe_20, bag_3_fe_20) = ftp( veh.clone(), (-6.66666667 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN, ); - log::warn!("bag_1_fe_20: {} MPG", bag_1_fe_20); - log::warn!("bag_2_fe_20: {} MPG", bag_2_fe_20); - log::warn!("bag_3_fe_20: {} MPG", bag_3_fe_20); - log::info!("FTP"); + log::info!("bag_1_fe_20: {} MPG", bag_1_fe_20); + log::info!("bag_2_fe_20: {} MPG", bag_2_fe_20); + log::info!("bag_3_fe_20: {} MPG", bag_3_fe_20); + log::debug!("FTP"); let (bag_1_fe_75, bag_2_fe_75, bag_3_fe_75) = ftp(veh.clone(), (23.8889 + uc::CELSIUS_TO_KELVIN) * uc::KELVIN); - log::warn!("bag_1_fe_75: {} MPG", bag_1_fe_75); - log::warn!("bag_2_fe_75: {} MPG", bag_2_fe_75); - log::warn!("bag_3_fe_75: {} MPG", bag_3_fe_75); + log::info!("bag_1_fe_75: {} MPG", bag_1_fe_75); + log::info!("bag_2_fe_75: {} MPG", bag_2_fe_75); + log::info!("bag_3_fe_75: {} MPG", bag_3_fe_75); // City label FE // https://www.law.cornell.edu/cfr/text/40/600.114-12#a @@ -81,7 +90,7 @@ pub fn main(veh: &Vehicle) { let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 4.1; let city_fe = 0.905 / (start_fc + running_fc); - log::warn!("city_fe: {} MPG", city_fe); + log::info!("city_fe: {} MPG", city_fe); // Highway label FE // https://www.law.cornell.edu/cfr/text/40/600.114-12#b @@ -91,17 +100,17 @@ pub fn main(veh: &Vehicle) { let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 60.; let highway_fe = 0.905 / (start_fc + running_fc); - log::warn!("highway_fe: {} MPG", highway_fe); + log::info!("highway_fe: {} MPG", highway_fe); let combined_fe = 1.0 / (0.55 / city_fe + 0.45 / highway_fe); - log::warn!("combined_fe: {} MPG", combined_fe); + log::info!("combined_fe: {} MPG", combined_fe); let city_pct_error = pct_error(1. / city_fe, 1. / target_city_fe); let highway_pct_error = pct_error(1. / highway_fe, 1. / target_highway_fe); let combined_pct_error = pct_error(1. / combined_fe, 1. / target_combined_fe); - println!("Five cycle results:"); - println!( + log::info!("Five cycle results:"); + log::info!( " City:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", city_fe, 1. / city_fe, @@ -109,7 +118,7 @@ pub fn main(veh: &Vehicle) { 1. / target_city_fe, city_pct_error ); - println!( + log::info!( " Highway:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", highway_fe, 1. / highway_fe, @@ -117,7 +126,7 @@ pub fn main(veh: &Vehicle) { 1. / target_highway_fe, highway_pct_error ); - println!( + log::info!( " Combined:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", combined_fe, 1. / combined_fe, @@ -137,8 +146,8 @@ pub fn main(veh: &Vehicle) { let combined_pct_error = pct_error(1. / sdlabel_results.adj_comb_mpgge, 1. / target_combined_fe); - println!("Simdrivelabel results:"); - println!( + log::info!("Simdrivelabel results:"); + log::info!( " City:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", sdlabel_results.adj_udds_mpgge, 1. / sdlabel_results.adj_udds_mpgge, @@ -146,7 +155,7 @@ pub fn main(veh: &Vehicle) { 1. / target_city_fe, city_pct_error ); - println!( + log::info!( " Highway:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", sdlabel_results.adj_hwy_mpgge, 1. / sdlabel_results.adj_hwy_mpgge, @@ -154,7 +163,7 @@ pub fn main(veh: &Vehicle) { 1. / target_highway_fe, highway_pct_error ); - println!( + log::info!( " Combined:\n sim: {:.2} MPG ({:.4} gal/mi)\n meas: {:.2} MPG ({:.4} gal/mi)\n error: {:+.2}%", sdlabel_results.adj_comb_mpgge, 1. / sdlabel_results.adj_comb_mpgge, @@ -167,6 +176,8 @@ pub fn main(veh: &Vehicle) { // - [x] merge in start-stop and DFCO // - [x] run simdrivelabel on base (non-thermal) model // - [ ] manual tweaking of thermal parameters - likely increase engine thermal mass + + (city_fe, highway_fe, combined_fe) } pub fn hfet(mut veh: Vehicle) -> f64 { @@ -183,10 +194,10 @@ pub fn hfet(mut veh: Vehicle) -> f64 { // Set up first simulation (cold start) let mut sd0 = SimDrive::new(veh.clone(), hfet.clone(), None); - log::info!("Initial temperatures:"); + log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate - log::info!("Temperatures after preconditioning:"); + log::debug!("Temperatures after preconditioning:"); log_temperatures(&sd0.veh); // Set up idle simulation (15 seconds idle) @@ -208,7 +219,7 @@ pub fn hfet(mut veh: Vehicle) -> f64 { set_res_temperature(&mut sd_idle.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); } sd_idle.walk().unwrap(); // simulate - log::info!("Post-idle results:"); + log::debug!("Post-idle results:"); log_temperatures(&sd_idle.veh); output_energy(&sd_idle.veh); @@ -223,7 +234,7 @@ pub fn hfet(mut veh: Vehicle) -> f64 { set_res_temperature(&mut sd1.veh, get_res_temperature(&sd_idle.veh).unwrap()).unwrap(); } sd1.walk().unwrap(); // simulate - log::info!("Final results:"); + log::debug!("Final results:"); log_temperatures(&sd1.veh); output_energy(&sd1.veh); @@ -250,10 +261,10 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { // Set up first simulation (cold start) let mut sd0 = SimDrive::new(veh.clone(), us06.clone(), None); - log::info!("Initial temperatures:"); + log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate - log::info!("Temperatures after preconditioning:"); + log::debug!("Temperatures after preconditioning:"); log_temperatures(&sd0.veh); // Set up idle simulation (1 to 2 minutes idle) @@ -275,7 +286,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { set_res_temperature(&mut sd_idle.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); } sd_idle.walk().unwrap(); // simulate - log::info!("Post-idle results:"); + log::debug!("Post-idle results:"); log_temperatures(&sd_idle.veh); output_energy(&sd_idle.veh); @@ -290,7 +301,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { set_res_temperature(&mut sd1.veh, get_res_temperature(&sd_idle.veh).unwrap()).unwrap(); } sd1.walk().unwrap(); // simulate - log::info!("Phase 1 results (city 1):"); + log::debug!("Phase 1 results (city 1):"); log_temperatures(&sd1.veh); output_energy(&sd1.veh); @@ -305,7 +316,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { set_res_temperature(&mut sd2.veh, get_res_temperature(&sd1.veh).unwrap()).unwrap(); } sd2.walk().unwrap(); // simulate - log::info!("Phase 2 results (highway):"); + log::debug!("Phase 2 results (highway):"); log_temperatures(&sd2.veh); output_energy(&sd2.veh); @@ -320,7 +331,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { set_res_temperature(&mut sd3.veh, get_res_temperature(&sd2.veh).unwrap()).unwrap(); } sd3.walk().unwrap(); // simulate - log::info!("Phase 3 results (city 2):"); + log::debug!("Phase 3 results (city 2):"); log_temperatures(&sd3.veh); output_energy(&sd3.veh); @@ -350,10 +361,10 @@ pub fn sc03(mut veh: Vehicle) -> f64 { // First simulation (UDDS cold start) let mut sd0 = SimDrive::new(veh.clone(), udds, None); - log::info!("Initial temperatures:"); + log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate - log::info!("Temperatures after preconditioning:"); + log::debug!("Temperatures after preconditioning:"); log_temperatures(&sd0.veh); // Engine-off soak (10 minutes) @@ -378,7 +389,7 @@ pub fn sc03(mut veh: Vehicle) -> f64 { } sd_soak.walk().unwrap(); // simulate assert!(output_energy(&sd_soak.veh).get::() == 0.0); - log::info!("Post-soak temperatures:"); + log::debug!("Post-soak temperatures:"); log_temperatures(&sd_soak.veh); // Second simulation @@ -392,7 +403,7 @@ pub fn sc03(mut veh: Vehicle) -> f64 { set_res_temperature(&mut sd1.veh, get_res_temperature(&sd_soak.veh).unwrap()).unwrap(); } sd1.walk().unwrap(); // simulate - log::info!("Final results:"); + log::debug!("Final results:"); log_temperatures(&sd1.veh); output_energy(&sd1.veh); @@ -416,10 +427,10 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { // First simulation (cold start transient) let mut sd0 = SimDrive::new(veh.clone(), ftp_transient.clone(), None); - log::info!("Initial temperatures:"); + log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate - log::info!("Temperatures after cold start transient segment:"); + log::debug!("Temperatures after cold start transient segment:"); log_temperatures(&sd0.veh); // Second simulation (stabilized) @@ -433,7 +444,7 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { set_res_temperature(&mut sd1.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); } sd1.walk().unwrap(); // simulate - log::info!("Temperatures after stabilized segment:"); + log::debug!("Temperatures after stabilized segment:"); log_temperatures(&sd1.veh); // Engine-off soak (10 minutes) @@ -458,7 +469,7 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { } sd_soak.walk().unwrap(); // simulate assert!(output_energy(&sd_soak.veh).get::() == 0.0); - log::info!("Temperatures after 10 minute soak:"); + log::debug!("Temperatures after 10 minute soak:"); log_temperatures(&sd_soak.veh); // Second simulation (transient) @@ -472,7 +483,7 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { set_res_temperature(&mut sd2.veh, get_res_temperature(&sd_soak.veh).unwrap()).unwrap(); } sd2.walk().unwrap(); // simulate - log::info!("Temperatures after hot start transient segment:"); + log::debug!("Temperatures after hot start transient segment:"); log_temperatures(&sd2.veh); output_energy(&sd2.veh); @@ -615,19 +626,19 @@ fn set_res_temperature(veh: &mut Vehicle, new_temperature: si::Temperature) -> a fn log_temperatures(veh: &Vehicle) { if let Some(temp) = get_cabin_temperature(veh) { - log::info!( + log::debug!( " cabin temperature: {} °C", temp.get::() ); } if let Some(temp) = get_fc_temperature(veh) { - log::info!( + log::debug!( " fuel converter temperature: {} °C", temp.get::() ); } if let Some(temp) = get_res_temperature(veh) { - log::info!( + log::debug!( " reversible energy storage temperature: {} °C", temp.get::() ); @@ -639,7 +650,7 @@ fn output_energy(veh: &Vehicle) -> si::Energy { .fc() .map(|fc| fc.state.energy_fuel.get_fresh(|| format_dbg!()).unwrap()); if let Some(fc_energy) = fc_energy_opt { - log::info!( + log::debug!( " total expended fuel converter energy: {} kWh", fc_energy.get::() / 3.6e6 ); @@ -651,7 +662,7 @@ fn output_energy(veh: &Vehicle) -> si::Energy { .unwrap() }); if let Some(res_energy) = res_energy_opt { - log::info!( + log::debug!( " total expended battery energy (not including charger losses): {} kWh", res_energy.get::() / 3.6e6 ); @@ -692,7 +703,7 @@ mod tests { false, ) .unwrap(); - main(&veh); + five_cycle(&veh, true); } #[test] diff --git a/fastsim-py/src/lib.rs b/fastsim-py/src/lib.rs index 9fc99023e..4e1e5ab4e 100644 --- a/fastsim-py/src/lib.rs +++ b/fastsim-py/src/lib.rs @@ -47,7 +47,11 @@ fn fastsim(_py: Python, m: &Bound) -> PyResult<()> { // List enabled features m.add_function(wrap_pyfunction!(fastsim_core::enabled_features, m)?)?; - m.add_function(wrap_pyfunction!(fastsim_core::simdrivelabel::get_label_fe_py, m)?)?; + m.add_function(wrap_pyfunction!( + fastsim_core::simdrivelabel::get_label_fe_py, + m + )?)?; + m.add_function(wrap_pyfunction!(fastsim_core::five_cycle::five_cycle, m)?)?; Ok(()) } From 8614870ed9c22d6d0ff459bf3314017670c49247 Mon Sep 17 00:00:00 2001 From: Kyle Carow Date: Mon, 13 Jul 2026 00:41:12 -0600 Subject: [PATCH 4/5] five_cycle fixes, necessary changes for soak simulation --- fastsim-core/src/five_cycle/mod.rs | 139 +++++++++++++++------- fastsim-core/src/vehicle/vehicle_model.rs | 24 ++++ 2 files changed, 122 insertions(+), 41 deletions(-) diff --git a/fastsim-core/src/five_cycle/mod.rs b/fastsim-core/src/five_cycle/mod.rs index ec4f41af3..bb2ec6a14 100644 --- a/fastsim-core/src/five_cycle/mod.rs +++ b/fastsim-core/src/five_cycle/mod.rs @@ -44,7 +44,7 @@ pub fn pct_error(actual: f64, expected: f64) -> f64 { )] pub fn five_cycle(veh: &Vehicle, logging: bool) -> (f64, f64, f64) { if logging { - init_logger(LevelFilter::Info).unwrap(); + let _ = init_logger(LevelFilter::Debug); } // Pacifica FE targets @@ -81,25 +81,46 @@ pub fn five_cycle(veh: &Vehicle, logging: bool) -> (f64, f64, f64) { log::info!("bag_2_fe_75: {} MPG", bag_2_fe_75); log::info!("bag_3_fe_75: {} MPG", bag_3_fe_75); + let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 - 1. / bag_3_fe_20); + let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 - 1. / bag_3_fe_75); + // City label FE // https://www.law.cornell.edu/cfr/text/40/600.114-12#a let running_fc = 0.82 * (0.48 / bag_2_fe_75 + 0.41 / bag_3_fe_75 + 0.11 / us06_city_fe) + 0.18 * (0.5 / bag_2_fe_20 + 0.5 / bag_3_fe_20) + 0.133 * 1.083 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); - let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); - let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 4.1; + let city_total_fc = start_fc + running_fc; let city_fe = 0.905 / (start_fc + running_fc); + let target_city_total_fc = 0.905 / target_city_fe; + log::info!( + "city_fc_breakdown: start_fc={:.6}, running_fc={:.6}, total_fc={:.6}, target_total_fc={:.6}, start_share={:.1}%, running_share={:.1}%", + start_fc, + running_fc, + city_total_fc, + target_city_total_fc, + 100. * start_fc / city_total_fc, + 100. * running_fc / city_total_fc, + ); log::info!("city_fe: {} MPG", city_fe); // Highway label FE // https://www.law.cornell.edu/cfr/text/40/600.114-12#b let running_fc = 1.007 * (0.79 / us06_highway_fe + 0.21 / hfet_fe) + 0.133 * 0.377 * (1. / sc03_fe - (0.61 / bag_3_fe_75 + 0.39 / bag_2_fe_75)); - let start_fuel_20 = 3.6 * (1. / bag_1_fe_20 + 1. / bag_3_fe_20); - let start_fuel_75 = 3.6 * (1. / bag_1_fe_75 + 1. / bag_3_fe_75); let start_fc = 0.33 * (0.76 * start_fuel_75 + 0.24 * start_fuel_20) / 60.; + let highway_total_fc = start_fc + running_fc; let highway_fe = 0.905 / (start_fc + running_fc); + let target_highway_total_fc = 0.905 / target_highway_fe; + log::info!( + "highway_fc_breakdown: start_fc={:.6}, running_fc={:.6}, total_fc={:.6}, target_total_fc={:.6}, start_share={:.1}%, running_share={:.1}%", + start_fc, + running_fc, + highway_total_fc, + target_highway_total_fc, + 100. * start_fc / highway_total_fc, + 100. * running_fc / highway_total_fc, + ); log::info!("highway_fe: {} MPG", highway_fe); let combined_fe = 1.0 / (0.55 / city_fe + 0.45 / highway_fe); @@ -181,6 +202,9 @@ pub fn five_cycle(veh: &Vehicle, logging: bool) -> (f64, f64, f64) { } pub fn hfet(mut veh: Vehicle) -> f64 { + let mut sim_params = SimParams::default(); + sim_params.trace_miss_opts = TraceMissOptions::AllowChecked; + let ambient_temp = (25. + uc::CELSIUS_TO_KELVIN) * uc::KELVIN; // Set initial temperatures to ambient set_cabin_temperature(&mut veh, ambient_temp).unwrap(); @@ -193,7 +217,7 @@ pub fn hfet(mut veh: Vehicle) -> f64 { let hfet = Cycle::from_resource("hwfet.csv", false).unwrap(); // Set up first simulation (cold start) - let mut sd0 = SimDrive::new(veh.clone(), hfet.clone(), None); + let mut sd0 = SimDrive::new(veh.clone(), hfet.clone(), Some(sim_params.clone())); log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate @@ -202,14 +226,15 @@ pub fn hfet(mut veh: Vehicle) -> f64 { // Set up idle simulation (15 seconds idle) let idle = Cycle::try_from(crate::drive_cycle::CycleBuilder { - name: String::from("idle"), + name: String::from("idle").into(), time: (0..15) .map(|t| (t as f64) * uc::S) - .collect::>(), - speed: vec![0.0 * uc::MPS; 15], + .collect::>() + .into(), + speed: vec![0.0 * uc::MPS; 15].into(), }) .unwrap(); - let mut sd_idle = SimDrive::new(veh.clone(), idle, None); + let mut sd_idle = SimDrive::new(veh.clone(), idle, Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd_idle.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -224,7 +249,7 @@ pub fn hfet(mut veh: Vehicle) -> f64 { output_energy(&sd_idle.veh); // Set up second simulation - let mut sd1 = SimDrive::new(veh.clone(), hfet, None); + let mut sd1 = SimDrive::new(veh.clone(), hfet, Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd_idle.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -244,6 +269,9 @@ pub fn hfet(mut veh: Vehicle) -> f64 { } pub fn us06(mut veh: Vehicle) -> (f64, f64) { + let mut sim_params = SimParams::default(); + sim_params.trace_miss_opts = TraceMissOptions::AllowChecked; + let ambient_temp = (25. + uc::CELSIUS_TO_KELVIN) * uc::KELVIN; // Set initial temperatures to ambient set_cabin_temperature(&mut veh, ambient_temp).unwrap(); @@ -260,7 +288,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { let us06_city_2 = Cycle::from_resource("us06_city_2.csv", false).unwrap(); // Set up first simulation (cold start) - let mut sd0 = SimDrive::new(veh.clone(), us06.clone(), None); + let mut sd0 = SimDrive::new(veh.clone(), us06.clone(), Some(sim_params.clone())); log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate @@ -269,14 +297,15 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { // Set up idle simulation (1 to 2 minutes idle) let idle = Cycle::try_from(crate::drive_cycle::CycleBuilder { - name: String::from("idle"), + name: String::from("idle").into(), time: (0..90) .map(|t| (t as f64) * uc::S) - .collect::>(), - speed: vec![0.0 * uc::MPS; 90], + .collect::>() + .into(), + speed: vec![0.0 * uc::MPS; 90].into(), }) .unwrap(); - let mut sd_idle = SimDrive::new(veh.clone(), idle, None); + let mut sd_idle = SimDrive::new(veh.clone(), idle, Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd_idle.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -291,7 +320,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { output_energy(&sd_idle.veh); // Set up second simulation, US06 first 'city' portion (1-130 sec) - let mut sd1 = SimDrive::new(veh.clone(), us06_city_1, None); + let mut sd1 = SimDrive::new(veh.clone(), us06_city_1, Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd_idle.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -306,7 +335,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { output_energy(&sd1.veh); // Set up third simulation, US06 'highway' portion (130-495 sec) - let mut sd2 = SimDrive::new(veh.clone(), us06_highway, None); + let mut sd2 = SimDrive::new(veh.clone(), us06_highway, Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd2.veh, get_cabin_temperature(&sd1.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -321,7 +350,7 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { output_energy(&sd2.veh); // Set up fourth simulation, US06 'city' portion (495-600 sec) - let mut sd3 = SimDrive::new(veh.clone(), us06_city_2, None); + let mut sd3 = SimDrive::new(veh.clone(), us06_city_2, Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd3.veh, get_cabin_temperature(&sd2.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -346,6 +375,9 @@ pub fn us06(mut veh: Vehicle) -> (f64, f64) { } pub fn sc03(mut veh: Vehicle) -> f64 { + let mut sim_params = SimParams::default(); + sim_params.trace_miss_opts = TraceMissOptions::AllowChecked; + let ambient_temp = (35. + uc::CELSIUS_TO_KELVIN) * uc::KELVIN; // Set initial temperatures to ambient set_cabin_temperature(&mut veh, ambient_temp).unwrap(); @@ -360,7 +392,7 @@ pub fn sc03(mut veh: Vehicle) -> f64 { let sc03 = Cycle::from_resource("sc03.csv", false).unwrap(); // First simulation (UDDS cold start) - let mut sd0 = SimDrive::new(veh.clone(), udds, None); + let mut sd0 = SimDrive::new(veh.clone(), udds, Some(sim_params.clone())); log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate @@ -369,15 +401,18 @@ pub fn sc03(mut veh: Vehicle) -> f64 { // Engine-off soak (10 minutes) let soak = Cycle::try_from(crate::drive_cycle::CycleBuilder { - name: String::from("soak"), + name: String::from("soak").into(), time: (0..600) .map(|t| (t as f64) * uc::S) - .collect::>(), - speed: vec![0.0 * uc::MPS; 600], + .collect::>() + .into(), + speed: vec![0.0 * uc::MPS; 600].into(), }) .unwrap(); - let mut sd_soak = SimDrive::new(veh.clone(), soak, None); - // Zero out aux load + let mut soak_params = sim_params.clone(); + soak_params.ambient_thermal_soak = true; + let mut sd_soak = SimDrive::new(veh.clone(), soak, Some(soak_params)); + // Emulate key-off soak: no base aux draw. sd_soak.veh.pwr_aux_base = 0.0 * uc::W; // Set temperatures set_cabin_temperature(&mut sd_soak.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); @@ -387,13 +422,15 @@ pub fn sc03(mut veh: Vehicle) -> f64 { if veh.res().is_some() { set_res_temperature(&mut sd_soak.veh, get_res_temperature(&sd0.veh).unwrap()).unwrap(); } - sd_soak.walk().unwrap(); // simulate + sd_soak + .walk() + .unwrap_or_else(|e| panic!("{e:#}")); // simulate assert!(output_energy(&sd_soak.veh).get::() == 0.0); log::debug!("Post-soak temperatures:"); log_temperatures(&sd_soak.veh); // Second simulation - let mut sd1 = SimDrive::new(veh.clone(), sc03.clone(), None); + let mut sd1 = SimDrive::new(veh.clone(), sc03.clone(), Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd_soak.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -411,6 +448,9 @@ pub fn sc03(mut veh: Vehicle) -> f64 { } pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { + let mut sim_params = SimParams::default(); + sim_params.trace_miss_opts = TraceMissOptions::AllowChecked; + // Set initial temperatures to ambient set_cabin_temperature(&mut veh, ambient_temp).unwrap(); if veh.fc().is_some() { @@ -426,7 +466,7 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { ftp_stabilized.temp_amb_air = vec![ambient_temp; ftp_stabilized.time.len()]; // First simulation (cold start transient) - let mut sd0 = SimDrive::new(veh.clone(), ftp_transient.clone(), None); + let mut sd0 = SimDrive::new(veh.clone(), ftp_transient.clone(), Some(sim_params.clone())); log::debug!("Initial temperatures:"); log_temperatures(&sd0.veh); sd0.walk().unwrap(); // simulate @@ -434,7 +474,11 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { log_temperatures(&sd0.veh); // Second simulation (stabilized) - let mut sd1 = SimDrive::new(veh.clone(), ftp_stabilized.clone(), None); + let mut sd1 = SimDrive::new( + veh.clone(), + ftp_stabilized.clone(), + Some(sim_params.clone()), + ); // Set temperatures set_cabin_temperature(&mut sd1.veh, get_cabin_temperature(&sd0.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -449,15 +493,18 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { // Engine-off soak (10 minutes) let soak = Cycle::try_from(crate::drive_cycle::CycleBuilder { - name: String::from("soak"), + name: String::from("soak").into(), time: (0..600) .map(|t| (t as f64) * uc::S) - .collect::>(), - speed: vec![0.0 * uc::MPS; 600], + .collect::>() + .into(), + speed: vec![0.0 * uc::MPS; 600].into(), }) .unwrap(); - let mut sd_soak = SimDrive::new(veh.clone(), soak, None); - // Zero out aux load + let mut soak_params = sim_params.clone(); + soak_params.ambient_thermal_soak = true; + let mut sd_soak = SimDrive::new(veh.clone(), soak, Some(soak_params)); + // Emulate key-off soak: no base aux draw. sd_soak.veh.pwr_aux_base = 0.0 * uc::W; // Set temperatures set_cabin_temperature(&mut sd_soak.veh, get_cabin_temperature(&sd1.veh).unwrap()).unwrap(); @@ -467,13 +514,15 @@ pub fn ftp(mut veh: Vehicle, ambient_temp: si::Temperature) -> (f64, f64, f64) { if veh.res().is_some() { set_res_temperature(&mut sd_soak.veh, get_res_temperature(&sd1.veh).unwrap()).unwrap(); } - sd_soak.walk().unwrap(); // simulate + sd_soak + .walk() + .unwrap_or_else(|e| panic!("{e:#}")); // simulate assert!(output_energy(&sd_soak.veh).get::() == 0.0); log::debug!("Temperatures after 10 minute soak:"); log_temperatures(&sd_soak.veh); // Second simulation (transient) - let mut sd2 = SimDrive::new(veh.clone(), ftp_transient.clone(), None); + let mut sd2 = SimDrive::new(veh.clone(), ftp_transient.clone(), Some(sim_params.clone())); // Set temperatures set_cabin_temperature(&mut sd2.veh, get_cabin_temperature(&sd_soak.veh).unwrap()).unwrap(); if veh.fc().is_some() { @@ -695,6 +744,14 @@ fn get_mpg(veh: &Vehicle) -> f64 { #[cfg(test)] mod tests { use super::*; + use std::sync::OnceLock; + + fn init_test_logger() { + static LOGGER_INIT: OnceLock<()> = OnceLock::new(); + LOGGER_INIT.get_or_init(|| { + let _ = init_logger(LevelFilter::Info); + }); + } #[test] fn test_main() { @@ -708,7 +765,7 @@ mod tests { #[test] fn test_hfet() { - init_logger(LevelFilter::Info).unwrap(); + init_test_logger(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -719,7 +776,7 @@ mod tests { #[test] fn test_us06() { - init_logger(LevelFilter::Info).unwrap(); + init_test_logger(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -730,7 +787,7 @@ mod tests { #[test] fn test_sc03() { - init_logger(LevelFilter::Info).unwrap(); + init_test_logger(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -741,7 +798,7 @@ mod tests { #[test] fn test_ftp_cold() { - init_logger(LevelFilter::Info).unwrap(); + init_test_logger(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, @@ -752,7 +809,7 @@ mod tests { #[test] fn test_ftp() { - init_logger(LevelFilter::Info).unwrap(); + init_test_logger(); let veh = Vehicle::from_resource( "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml", false, diff --git a/fastsim-core/src/vehicle/vehicle_model.rs b/fastsim-core/src/vehicle/vehicle_model.rs index 8c1fa1515..86452297e 100644 --- a/fastsim-core/src/vehicle/vehicle_model.rs +++ b/fastsim-core/src/vehicle/vehicle_model.rs @@ -857,6 +857,21 @@ impl Vehicle { .update(self.pwr_aux_base, || format_dbg!())?; (None, None, Some(te_cab)) } + (CabinOption::LumpedCabin(cab), HVACOption::None, None) => { + let te_cab = cab + .solve( + te_amb_air, + &self.state, + si::Power::ZERO, + si::Power::ZERO, + dt, + ) + .with_context(|| format_dbg!())?; + self.state + .pwr_aux + .update(self.pwr_aux_base, || format_dbg!())?; + (None, None, Some(te_cab)) + } (_, _, _) => { bail!( "{}\nCabin, HVAC, and RESThermal configuration is either invalid or not yet implemented.\n{} - {} - {}", @@ -932,6 +947,15 @@ impl Vehicle { trans.state.energy_in.mark_stale(); trans.state.energy_loss.mark_stale(); } + if let PowertrainType::ConventionalVehicle(conv) = &mut self.pt_type { + match &mut conv.pt_cntrl { + ConvPowertrainControls::StopStart(ctrl) => ctrl.state.i.mark_stale(), + ConvPowertrainControls::Normal => {} + } + conv.pt_cntrl.mark_fresh(|| format_dbg!())?; + conv.dfco_cntrl.state.i.mark_stale(); + conv.dfco_cntrl.mark_fresh(|| format_dbg!())?; + } if let PowertrainType::HybridElectricVehicle(hev) = &mut self.pt_type { match &mut hev.pt_cntrl { HEVPowertrainControls::RGWDB(rgwdb) => rgwdb.state.i.mark_stale(), From a4549d500f3f4c01ae4c2101d700bbc0ee2ed750 Mon Sep 17 00:00:00 2001 From: Kyle Carow Date: Mon, 13 Jul 2026 00:58:10 -0600 Subject: [PATCH 5/5] clean up pacifica cal files, moved to working fastsim-cal repo --- cal_and_val/thermal/cal_pacifica.py | 259 --- ...rysler_Pacifica_Select_DFCO_StopStart.yaml | 232 -- ...2026_Chrysler_Pacifica_Select_Thermal.yaml | 247 --- ...Chrysler_Pacifica_Select_Thermal_DFCO.yaml | 344 --- ...acifica_Select_Thermal_DFCO_StopStart.yaml | 366 ---- .../vehicles/dummy_minivan_thrml.yaml | 366 ---- pixi.lock | 1861 ++++++++--------- 7 files changed, 925 insertions(+), 2750 deletions(-) delete mode 100644 cal_and_val/thermal/cal_pacifica.py delete mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml delete mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml delete mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml delete mode 100644 fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml delete mode 100644 fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml diff --git a/cal_and_val/thermal/cal_pacifica.py b/cal_and_val/thermal/cal_pacifica.py deleted file mode 100644 index 571a419e8..000000000 --- a/cal_and_val/thermal/cal_pacifica.py +++ /dev/null @@ -1,259 +0,0 @@ -# %% -# Imports - -from copy import deepcopy - -import numpy as np -from scipy.optimize import differential_evolution - -import fastsim as fsim - - -def relative_error(actual: float, expected: float) -> float: - return (actual - expected) / expected - - -SHOW_INTERMEDIATE_OUTPUT = False - - -# %% -# Setters -# The 'set_' prefix is stripped when parsing parameter names - - -def set_fc_thrml_heat_capacitance_j_per_k(veh_dict: dict, new_val: float) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ - "heat_capacitance_joules_per_kelvin" - ] = new_val - return veh_dict - - -def set_fc_thrml_length_for_convection_m(veh_dict: dict, new_val: float) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ - "length_for_convection_meters" - ] = new_val - return veh_dict - - -def set_fc_thrml_htc_to_amb_stop_w_per_m2_k(veh_dict: dict, new_val: float) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ - "htc_to_amb_stop_watts_per_square_meter_kelvin" - ] = new_val - return veh_dict - - -def set_fc_thrml_conductance_from_comb_w_per_k(veh_dict: dict, new_val: float) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ - "conductance_from_comb_watts_per_kelvin" - ] = new_val - return veh_dict - - -def set_fc_thrml_radiator_effectiveness(veh_dict: dict, new_val: float) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"][ - "radiator_effectiveness" - ] = new_val - return veh_dict - - -def set_cab_shell_htc_w_per_m2_k(veh_dict: dict, new_val: float) -> dict: - veh_dict["cabin"]["LumpedCabin"][ - "cab_shell_htc_to_amb_watts_per_square_meter_kelvin" - ] = new_val - return veh_dict - - -def set_hvac_frac_of_ideal_cop(veh_dict: dict, new_val: float) -> dict: - veh_dict["hvac"]["LumpedCabin"]["frac_of_ideal_cop"] = new_val - return veh_dict - - -# fc_eff_model parameters -def set_fc_thrml_fc_eff_model_exponential_offset( - veh_dict: dict, new_val: float -) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"]["fc_eff_model"][ - "Exponential" - ]["offset"] = new_val - return veh_dict - - -def set_fc_thrml_fc_eff_model_exponential_lag(veh_dict: dict, new_val: float) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"]["fc_eff_model"][ - "Exponential" - ]["lag"] = new_val - return veh_dict - - -def set_fc_thrml_fc_eff_model_exponential_minimum( - veh_dict: dict, new_val: float -) -> dict: - veh_dict["pt_type"][PT_TYPE]["fc"]["thrml"]["FuelConverterThermal"]["fc_eff_model"][ - "Exponential" - ]["minimum"] = new_val - return veh_dict - - -# %% -# Targets -TARGET_CITY_MPG = 18.9954 -TARGET_HWY_MPG = 28.1266 - -TARGET_CITY_GAL_PER_MILE = 1 / TARGET_CITY_MPG -TARGET_HWY_GAL_PER_MILE = 1 / TARGET_HWY_MPG - -PT_TYPE = "Conv" - -# Load the base vehicle once; all evaluations copy from this dict. -veh_base = fsim.Vehicle.from_resource( - "2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml" -) -veh_base_dict = veh_base.to_pydict() - -# %% -# Parameters -# (parameter setter function, lower bound, upper bound) -PARAM_REGISTRY: list[tuple] = [ - (set_fc_thrml_heat_capacitance_j_per_k, 50_000.0, 300_000.0), - # (set_fc_thrml_length_for_convection_m, 1.0, 3.0), # TODO: causes error - (set_fc_thrml_htc_to_amb_stop_w_per_m2_k, 5.0, 100.0), - (set_fc_thrml_conductance_from_comb_w_per_k, 5.0, 5_000.0), - (set_fc_thrml_radiator_effectiveness, 3.0, 300.0), - (set_cab_shell_htc_w_per_m2_k, 10.0, 250.0), - (set_hvac_frac_of_ideal_cop, 0.05, 0.35), - # fc_eff_model parameters - (set_fc_thrml_fc_eff_model_exponential_offset, 220.0, 350.0), - (set_fc_thrml_fc_eff_model_exponential_lag, 10.0, 60.0), - (set_fc_thrml_fc_eff_model_exponential_minimum, 0.15, 0.35), -] -PARAM_NAMES = [fn.__name__.removeprefix("set_") for fn, *_ in PARAM_REGISTRY] -BOUNDS = [(lb, ub) for _, lb, ub in PARAM_REGISTRY] - -# %% -# Objective function - - -def run_five_cycle( - veh: fsim.Vehicle, logging: bool = False -) -> tuple[float, float, float, float]: - city_mpg, hwy_mpg, comb_mpg = fsim.five_cycle(veh, logging=logging) - - # Calculate error in terms of gal/mile - city_gal_per_mi = 1 / city_mpg - hwy_gal_per_mi = 1 / hwy_mpg - - err_city = relative_error(city_gal_per_mi, TARGET_CITY_GAL_PER_MILE) - err_hwy = relative_error(hwy_gal_per_mi, TARGET_HWY_GAL_PER_MILE) - err_comb = relative_error( - 1 / comb_mpg, 1 / ((TARGET_CITY_MPG + TARGET_HWY_MPG) / 2) - ) - # Calculate error using only city and highway error - obj_val = err_city**2 + err_hwy**2 - - return city_mpg, hwy_mpg, comb_mpg, err_city, err_hwy, err_comb, obj_val - - -def calculate_error(xs: np.ndarray) -> float: - """ - Run five_cycle function and return sum of square errors - """ - veh_dict = deepcopy(veh_base_dict) - for (setter_fn, _, _), val in zip(PARAM_REGISTRY, xs): - veh_dict = setter_fn(veh_dict, val) - - veh = fsim.Vehicle.from_pydict(veh_dict, skip_init=False) - city_mpg, hwy_mpg, comb_mpg, err_city, err_hwy, err_comb, obj_val = run_five_cycle( - veh - ) - - param_strs = ", ".join(f"{name} = {v:.4g}" for name, v in zip(PARAM_NAMES, xs)) - if SHOW_INTERMEDIATE_OUTPUT: - print( - f" [{param_strs}] " - f"city = {city_mpg:.4f} mpg ({100 * err_city:+.2f}%) " - f"highway = {hwy_mpg:.4f} mpg ({100 * err_hwy:+.2f}%) " - f"combined = {comb_mpg:.4f} mpg ({100 * err_comb:+.2f}%) " - f"obj = {obj_val:.6f}" - ) - return obj_val - - -# %% -# Main function - -if __name__ == "__main__": - # Print initial info - print(f"Targets: city = {TARGET_CITY_MPG} mpg, hwy = {TARGET_HWY_MPG} mpg") - print(f"Optimizing {len(PARAM_REGISTRY)} parameter(s):") - for name, (lb, ub) in zip(PARAM_NAMES, BOUNDS): - print(f" {name}: [{lb:.4g}, {ub:.4g}]") - print() - - # Optimize - print("\n── Optimization Output ──────────────────────────────────────────────────") - if not SHOW_INTERMEDIATE_OUTPUT: - print("(output suppressed)...") - result = differential_evolution( - calculate_error, - bounds=BOUNDS, - seed=42, - tol=1e-4, - atol=1e-6, - maxiter=200, - popsize=5, - disp=SHOW_INTERMEDIATE_OUTPUT, - workers=1, - ) - - # Show parameter with asterisk * if parameter is close to either bound - BOUND_TOL = 0.05 # within 5% of bound - near_bound = [] - for val, (lb, ub) in zip(result.x, BOUNDS): - bound_range = ub - lb - if (val - lb) / bound_range < BOUND_TOL or (ub - val) / bound_range < BOUND_TOL: - near_bound.append(True) - else: - near_bound.append(False) - asterisks = ["*" if near else "" for near in near_bound] - - # Print results - print("\n── Optimization Result ──────────────────────────────────────────────────") - print(f"Message: {result.message}") - ( - _city_mpg, - _hwy_mpg, - _combined_mpg, - _err_city, - _err_hwy, - _err_comb, - unopt_obj_val, - ) = run_five_cycle(veh_base) - print(f"Objective value (unoptimized): {unopt_obj_val:.6f}") - print(f"Objective value (final): {result.fun:.6f}") - print("\nOptimal parameters:") - for name, val, (lb, ub), asterisk in zip(PARAM_NAMES, result.x, BOUNDS, asterisks): - print(f" {asterisk}{name}: {val:.6g} (bounds: [{lb:.4g}, {ub:.4g}])") - - # Final evaluation with logging enabled - print("\nFinal five_cycle run:") - veh_dict_final = deepcopy(veh_base_dict) - for (setter_fn, *_), val in zip(PARAM_REGISTRY, result.x): - veh_dict_final = setter_fn(veh_dict_final, val) - veh_final = fsim.Vehicle.from_pydict(veh_dict_final, skip_init=False) - city_mpg, hwy_mpg, combined_mpg, err_city, err_hwy, err_comb, obj_val = ( - run_five_cycle(veh_final) - ) - print(f" city = {city_mpg:.4f} mpg ({100 * err_city:+.2f}%)") - print(f" hwy = {hwy_mpg:.4f} mpg ({100 * err_hwy:+.2f}%)") - print(f" combined = {combined_mpg:.4f} mpg ({100 * err_comb:+.2f}%)") - - -# %% -# TODO: -# - [ ] revisit base model - apply script to non-thermal model & run simdrivelabel -# - [ ] sanity check parameter bounds -# - [ ] bug fix for characteristic length - nonzero fuel energy during soak - -# full size buses -# - [ ] dust off Altoona pipeline work to get base model -# - goal is to calibrate thermal model to match FleetDNA data diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml deleted file mode 100644 index 15f90749f..000000000 --- a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_DFCO_StopStart.yaml +++ /dev/null @@ -1,232 +0,0 @@ ---- -name: 2026 Chrysler Pacifica Select -doc: ~ -year: 2026 -pt_type: - Conv: - fs: - pwr_out_max_watts: 2000000.0 - pwr_ramp_lag_seconds: 1.1 - energy_capacity_joules: 2305080000.0 - specific_energy_joules_per_kilogram: ~ - mass_kilograms: ~ - fc: - thrml: None - mass_kilograms: ~ - specific_pwr_watts_per_kilogram: ~ - pwr_out_max_watts: 211088.0 - pwr_out_max_init_watts: 34604.59016393443 - pwr_ramp_lag_seconds: 6.1 - eff_interp_from_pwr_out: - data: - grid: - - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.005 - - 0.015 - - 0.04 - - 0.06 - - 0.1 - - 0.14 - - 0.2 - - 0.4 - - 0.6 - - 0.8 - - 1.0 - values: - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.0875106035 - - 0.143482108 - - 0.216273855 - - 0.252599848 - - 0.301508117 - - 0.33 - - 0.34 - - 0.35 - - 0.34 - - 0.32 - - 0.3 - strategy: Linear - extrapolate: Error - pwr_idle_fuel_watts: 0.0 - state: - i: 0 - pwr_out_max_watts: 0.0 - pwr_prop_max_watts: 0.0 - eff: 0.0 - pwr_prop_watts: 0.0 - energy_prop_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_fuel_watts: 0.0 - energy_fuel_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - fc_on: false - time_on_seconds: 0.0 - history: - i: [] - pwr_out_max_watts: [] - pwr_prop_max_watts: [] - eff: [] - pwr_prop_watts: [] - energy_prop_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_fuel_watts: [] - energy_fuel_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - fc_on: [] - time_on_seconds: [] - save_interval: 1 - transmission: - mass_kilograms: ~ - eff_interp: 0.95 - state: - i: 0 - pwr_out_fwd_max_watts: 0.0 - pwr_out_regen_max_watts: 0.0 - eff: 0.0 - pwr_out_watts: 0.0 - energy_out_joules: 0.0 - pwr_in_watts: 0.0 - energy_in_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - history: - i: [] - pwr_out_fwd_max_watts: [] - pwr_out_regen_max_watts: [] - eff: [] - pwr_out_watts: [] - energy_out_joules: [] - pwr_in_watts: [] - energy_in_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - save_interval: 1 - pt_cntrl: - StopStart: - fc_min_time_on_seconds: 5.0 - temp_fc_forced_on_kelvin: ~ - temp_fc_allowed_off_kelvin: ~ - time_delay_after_stop_until_fc_can_turn_off_seconds: 0.0 - save_interval: ~ - state: - i: 0 - fc_temperature_too_low: false - vehicle_not_stopped: false - on_time_too_short: false - time_vehicle_stopped_seconds: 0.0 - vehicle_not_stopped_long_enough: false - has_traction_power_request: false - history: - i: [] - fc_temperature_too_low: [] - vehicle_not_stopped: [] - on_time_too_short: [] - time_vehicle_stopped_seconds: [] - vehicle_not_stopped_long_enough: [] - has_traction_power_request: [] - dfco_cntrl: - dfco_enabled: true - minimum_dfco_speed_meters_per_second: 11.176 - minimum_dfco_deceleration_meters_per_second_squared: -0.2 - save_interval: ~ - state: - i: 0 - vehicle_dynamics_prevent_dfco: false - history: - i: [] - vehicle_dynamics_prevent_dfco: [] - mass_kilograms: ~ - alt_eff: 1.0 -chassis: - drag_coef: 0.3303036837542712 - frontal_area_square_meters: 3.05124164 - wheel_rr_coef: 0.0064798953284486704 - wheel_inertia_kilogram_square_meters: 0.815 - num_wheels: 4 - wheel_radius_meters: 0.36865 - tire_code: ~ - cg_height_meters: 0.53 - wheel_fric_coef: 0.8 - drive_type: FWD - drive_axle_weight_frac: 0.61 - wheel_base_meters: 3.08864 - mass_kilograms: ~ - glider_mass_kilograms: ~ - cargo_mass_kilograms: ~ -cabin: None -hvac: None -mass_kilograms: 2154.564 -pwr_aux_base_watts: 700.0 -save_interval: 1 -state: - i: 0 - time_seconds: 0.0 - pwr_prop_fwd_max_watts: 0.0 - pwr_prop_bwd_max_watts: 0.0 - pwr_tractive_watts: 0.0 - pwr_tractive_for_cyc_watts: 0.0 - energy_tractive_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_drag_watts: 0.0 - energy_drag_joules: 0.0 - pwr_accel_watts: 0.0 - energy_accel_joules: 0.0 - pwr_ascent_watts: 0.0 - energy_ascent_joules: 0.0 - pwr_rr_watts: 0.0 - energy_rr_joules: 0.0 - pwr_whl_inertia_watts: 0.0 - energy_whl_inertia_joules: 0.0 - pwr_brake_watts: 0.0 - energy_brake_joules: 0.0 - cyc_met: true - cyc_met_overall: true - speed_ach_meters_per_second: 0.0 - dist_meters: 0.0 - grade_curr: 0.0 - elev_curr_meters: 0.0 - air_density_kilograms_per_cubic_meter: 0.0 - mass_kilograms: .nan -history: - i: [] - time_seconds: [] - pwr_prop_fwd_max_watts: [] - pwr_prop_bwd_max_watts: [] - pwr_tractive_watts: [] - pwr_tractive_for_cyc_watts: [] - energy_tractive_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_drag_watts: [] - energy_drag_joules: [] - pwr_accel_watts: [] - energy_accel_joules: [] - pwr_ascent_watts: [] - energy_ascent_joules: [] - pwr_rr_watts: [] - energy_rr_joules: [] - pwr_whl_inertia_watts: [] - energy_whl_inertia_joules: [] - pwr_brake_watts: [] - energy_brake_joules: [] - cyc_met: [] - cyc_met_overall: [] - speed_ach_meters_per_second: [] - dist_meters: [] - grade_curr: [] - elev_curr_meters: [] - air_density_kilograms_per_cubic_meter: [] - mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml deleted file mode 100644 index 3836d4d6e..000000000 --- a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal.yaml +++ /dev/null @@ -1,247 +0,0 @@ ---- -name: 2026 Chrysler Pacifica Select (Thermal) -doc: ~ -year: 2026 -pt_type: - Conv: - fs: - pwr_out_max_watts: 2000000.0 - pwr_ramp_lag_seconds: 1.1 - energy_capacity_joules: 2305080000.0 - specific_energy_joules_per_kilogram: ~ - mass_kilograms: ~ - fc: - thrml: - FuelConverterThermal: # TODO: update copied values (hyundai sonata hybrid) - heat_capacitance_joules_per_kelvin: 72132.17831078888 - length_for_convection_meters: 0.5427107485587468 - htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 - conductance_from_comb_watts_per_kelvin: 2178.965385428629 - max_frac_from_comb: 0.5 - tstat_te_sto_kelvin: 358.15 - tstat_te_delta_kelvin: 5.0 - tstat_interp: - data: - grid: - - v: 1 - dim: - - 2 - data: - - 85.0 - - 90.0 - values: - v: 1 - dim: - - 2 - data: - - 0.0 - - 1.0 - strategy: Linear - extrapolate: Clamp - radiator_effectiveness: 168.06311964877182 - fc_eff_model: - Exponential: - offset: 320.1873803210462 - lag: 24.998774179607892 - minimum: 0.1927168135089094 - mass_kilograms: ~ - specific_pwr_watts_per_kilogram: ~ - pwr_out_max_watts: 211088.0 - pwr_out_max_init_watts: 34604.59016393443 - pwr_ramp_lag_seconds: 2 # edited from 6.1 - eff_interp_from_pwr_out: - data: - grid: - - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.005 - - 0.015 - - 0.04 - - 0.06 - - 0.1 - - 0.14 - - 0.2 - - 0.4 - - 0.6 - - 0.8 - - 1.0 - values: - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.0875106035 - - 0.143482108 - - 0.216273855 - - 0.252599848 - - 0.301508117 - - 0.33 - - 0.34 - - 0.35 - - 0.34 - - 0.32 - - 0.3 - strategy: Linear - extrapolate: Error - pwr_idle_fuel_watts: 0.0 - state: - i: 0 - pwr_out_max_watts: 0.0 - pwr_prop_max_watts: 0.0 - eff: 0.0 - pwr_prop_watts: 0.0 - energy_prop_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_fuel_watts: 0.0 - energy_fuel_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - fc_on: false - time_on_seconds: 0.0 - history: - i: [] - pwr_out_max_watts: [] - pwr_prop_max_watts: [] - eff: [] - pwr_prop_watts: [] - energy_prop_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_fuel_watts: [] - energy_fuel_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - fc_on: [] - time_on_seconds: [] - save_interval: 1 - transmission: - mass_kilograms: ~ - eff_interp: 0.95 - state: - i: 0 - pwr_out_fwd_max_watts: 0.0 - pwr_out_regen_max_watts: 0.0 - eff: 0.0 - pwr_out_watts: 0.0 - energy_out_joules: 0.0 - pwr_in_watts: 0.0 - energy_in_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - history: - i: [] - pwr_out_fwd_max_watts: [] - pwr_out_regen_max_watts: [] - eff: [] - pwr_out_watts: [] - energy_out_joules: [] - pwr_in_watts: [] - energy_in_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - save_interval: 1 - mass_kilograms: ~ - alt_eff: 1.0 -chassis: - drag_coef: 0.3303036837542712 - frontal_area_square_meters: 3.05124164 - wheel_rr_coef: 0.0064798953284486704 - wheel_inertia_kilogram_square_meters: 0.815 - num_wheels: 4 - wheel_radius_meters: 0.36865 - tire_code: ~ - cg_height_meters: 0.53 - wheel_fric_coef: 0.8 - drive_type: FWD - drive_axle_weight_frac: 0.61 - wheel_base_meters: 3.08864 - mass_kilograms: ~ - glider_mass_kilograms: ~ - cargo_mass_kilograms: ~ -cabin: # TODO: update copied values (hyundai sonata hybrid) - LumpedCabin: - cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 - cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 - heat_capacitance_joules_per_kelvin: 133887.55278894224 - length_meters: 3.261651382829292 - width_meters: 1.86 -hvac: # TODO: update copied values (hyundai sonata hybrid) - LumpedCabin: - te_set_kelvin: 295.15 - te_deadband_kelvin: 0.5 - p_watts_per_kelvin: 489.34499608760177 - i: 36.77964270414921 - pwr_i_max_watts: 10000.0 - d: 5.0 - pwr_thrml_max_watts: 15000.0 - frac_of_ideal_cop: 0.0778419513178728 - heat_source: FuelConverter - pwr_aux_for_hvac_max_watts: 8000.0 -mass_kilograms: 2154.564 -pwr_aux_base_watts: 700.0 -save_interval: 1 -state: - i: 0 - time_seconds: 0.0 - pwr_prop_fwd_max_watts: 0.0 - pwr_prop_bwd_max_watts: 0.0 - pwr_tractive_watts: 0.0 - pwr_tractive_for_cyc_watts: 0.0 - energy_tractive_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_drag_watts: 0.0 - energy_drag_joules: 0.0 - pwr_accel_watts: 0.0 - energy_accel_joules: 0.0 - pwr_ascent_watts: 0.0 - energy_ascent_joules: 0.0 - pwr_rr_watts: 0.0 - energy_rr_joules: 0.0 - pwr_whl_inertia_watts: 0.0 - energy_whl_inertia_joules: 0.0 - pwr_brake_watts: 0.0 - energy_brake_joules: 0.0 - cyc_met: true - cyc_met_overall: true - speed_ach_meters_per_second: 0.0 - dist_meters: 0.0 - grade_curr: 0.0 - elev_curr_meters: 0.0 - air_density_kilograms_per_cubic_meter: 0.0 - mass_kilograms: .nan -history: - i: [] - time_seconds: [] - pwr_prop_fwd_max_watts: [] - pwr_prop_bwd_max_watts: [] - pwr_tractive_watts: [] - pwr_tractive_for_cyc_watts: [] - energy_tractive_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_drag_watts: [] - energy_drag_joules: [] - pwr_accel_watts: [] - energy_accel_joules: [] - pwr_ascent_watts: [] - energy_ascent_joules: [] - pwr_rr_watts: [] - energy_rr_joules: [] - pwr_whl_inertia_watts: [] - energy_whl_inertia_joules: [] - pwr_brake_watts: [] - energy_brake_joules: [] - cyc_met: [] - cyc_met_overall: [] - speed_ach_meters_per_second: [] - dist_meters: [] - grade_curr: [] - elev_curr_meters: [] - air_density_kilograms_per_cubic_meter: [] - mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml deleted file mode 100644 index 2392a2ec1..000000000 --- a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO.yaml +++ /dev/null @@ -1,344 +0,0 @@ ---- -name: 2026 Chrysler Pacifica Select (Thermal) -doc: ~ -year: 2026 -pt_type: - Conv: - fs: - pwr_out_max_watts: 2000000.0 - pwr_ramp_lag_seconds: 1.1 - energy_capacity_joules: 2305080000.0 - specific_energy_joules_per_kilogram: ~ - mass_kilograms: ~ - fc: - thrml: - FuelConverterThermal: - heat_capacitance_joules_per_kelvin: 72132.17831078888 - length_for_convection_meters: 0.5427107485587468 - htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 - conductance_from_comb_watts_per_kelvin: 2178.965385428629 - max_frac_from_comb: 0.5 - tstat_te_sto_kelvin: 358.15 - tstat_te_delta_kelvin: 5.0 - tstat_interp: - data: - grid: - - v: 1 - dim: - - 2 - data: - - 85.0 - - 90.0 - values: - v: 1 - dim: - - 2 - data: - - 0.0 - - 1.0 - strategy: Linear - extrapolate: Clamp - radiator_effectiveness: 168.06311964877182 - fc_eff_model: - Exponential: - offset: 320.1873803210462 - lag: 24.998774179607892 - minimum: 0.1927168135089094 - state: - i: 0 - te_adiabatic_kelvin: 3153.8328742654194 - temperature_kelvin: 295.15 - tstat_open_frac: 0.0 - htc_to_amb_watts_per_square_meter_kelvin: 0.0 - pwr_thrml_to_amb_watts: 0.0 - energy_thrml_to_amb_joules: 0.0 - eff_coeff: 1.0 - pwr_thrml_fc_to_cab_watts: 0.0 - energy_thrml_fc_to_cab_joules: 0.0 - pwr_fuel_as_heat_watts: 0.0 - energy_fuel_as_heat_joules: 0.0 - pwr_thrml_to_tm_watts: 0.0 - energy_thrml_to_tm_joules: 0.0 - history: - i: [] - te_adiabatic_kelvin: [] - temperature_kelvin: [] - tstat_open_frac: [] - htc_to_amb_watts_per_square_meter_kelvin: [] - pwr_thrml_to_amb_watts: [] - energy_thrml_to_amb_joules: [] - eff_coeff: [] - pwr_thrml_fc_to_cab_watts: [] - energy_thrml_fc_to_cab_joules: [] - pwr_fuel_as_heat_watts: [] - energy_fuel_as_heat_joules: [] - pwr_thrml_to_tm_watts: [] - energy_thrml_to_tm_joules: [] - save_interval: ~ - mass_kilograms: ~ - specific_pwr_watts_per_kilogram: ~ - pwr_out_max_watts: 211088.0 - pwr_out_max_init_watts: 34604.59016393443 - pwr_ramp_lag_seconds: 2.0 - eff_interp_from_pwr_out: - data: - grid: - - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.005 - - 0.015 - - 0.04 - - 0.06 - - 0.1 - - 0.14 - - 0.2 - - 0.4 - - 0.6 - - 0.8 - - 1.0 - values: - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.0875106035 - - 0.143482108 - - 0.216273855 - - 0.252599848 - - 0.301508117 - - 0.33 - - 0.34 - - 0.35 - - 0.34 - - 0.32 - - 0.3 - strategy: Linear - extrapolate: Error - pwr_idle_fuel_watts: 0.0 - state: - i: 0 - pwr_out_max_watts: 0.0 - pwr_prop_max_watts: 0.0 - eff: 0.0 - pwr_prop_watts: 0.0 - energy_prop_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_fuel_watts: 0.0 - energy_fuel_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - fc_on: false - time_on_seconds: 0.0 - history: - i: [] - pwr_out_max_watts: [] - pwr_prop_max_watts: [] - eff: [] - pwr_prop_watts: [] - energy_prop_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_fuel_watts: [] - energy_fuel_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - fc_on: [] - time_on_seconds: [] - save_interval: 1 - transmission: - mass_kilograms: ~ - eff_interp: 0.95 - state: - i: 0 - pwr_out_fwd_max_watts: 0.0 - pwr_out_regen_max_watts: 0.0 - eff: 0.0 - pwr_out_watts: 0.0 - energy_out_joules: 0.0 - pwr_in_watts: 0.0 - energy_in_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - history: - i: [] - pwr_out_fwd_max_watts: [] - pwr_out_regen_max_watts: [] - eff: [] - pwr_out_watts: [] - energy_out_joules: [] - pwr_in_watts: [] - energy_in_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - save_interval: 1 - pt_cntrl: Normal - dfco_cntrl: - dfco_enabled: true - minimum_dfco_speed_meters_per_second: 11.176 - minimum_dfco_deceleration_meters_per_second_squared: -0.2 - save_interval: ~ - state: - i: 0 - vehicle_dynamics_prevent_dfco: false - history: - i: [] - vehicle_dynamics_prevent_dfco: [] - mass_kilograms: ~ - alt_eff: 1.0 -chassis: - drag_coef: 0.3303036837542712 - frontal_area_square_meters: 3.05124164 - wheel_rr_coef: 0.0064798953284486704 - wheel_inertia_kilogram_square_meters: 0.815 - num_wheels: 4 - wheel_radius_meters: 0.36865 - tire_code: ~ - cg_height_meters: 0.53 - wheel_fric_coef: 0.8 - drive_type: FWD - drive_axle_weight_frac: 0.61 - wheel_base_meters: 3.08864 - mass_kilograms: ~ - glider_mass_kilograms: ~ - cargo_mass_kilograms: ~ -cabin: - LumpedCabin: - cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 - cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 - heat_capacitance_joules_per_kelvin: 133887.55278894224 - length_meters: 3.261651382829292 - width_meters: 1.86 - state: - i: 0 - temperature_kelvin: 295.15 - temp_prev_kelvin: 295.15 - pwr_thrml_from_hvac_watts: 0.0 - energy_thrml_from_hvac_joules: 0.0 - pwr_thrml_from_amb_watts: 0.0 - energy_thrml_from_amb_joules: 0.0 - pwr_thrml_to_res_watts: 0.0 - energy_thrml_to_res_joules: 0.0 - reynolds_for_plate: 0.0 - history: - i: [] - temperature_kelvin: [] - temp_prev_kelvin: [] - pwr_thrml_from_hvac_watts: [] - energy_thrml_from_hvac_joules: [] - pwr_thrml_from_amb_watts: [] - energy_thrml_from_amb_joules: [] - pwr_thrml_to_res_watts: [] - energy_thrml_to_res_joules: [] - reynolds_for_plate: [] - save_interval: ~ -hvac: - LumpedCabin: - te_set_kelvin: 295.15 - te_deadband_kelvin: 0.5 - p_watts_per_kelvin: 489.34499608760177 - i: 36.77964270414921 - pwr_i_max_watts: 10000.0 - d: 5.0 - pwr_thrml_max_watts: 15000.0 - frac_of_ideal_cop: 0.0778419513178728 - heat_source: FuelConverter - pwr_aux_for_hvac_max_watts: 8000.0 - state: - i: 0 - pwr_p_watts: 0.0 - energy_p_joules: 0.0 - pwr_i_watts: 0.0 - energy_i_joules: 0.0 - pwr_d_watts: 0.0 - energy_d_joules: 0.0 - cop: ~ - pwr_aux_for_hvac_watts: 0.0 - energy_aux_for_hvac_joules: 0.0 - pwr_thrml_hvac_to_cabin_watts: 0.0 - energy_thrml_hvac_to_cabin_joules: 0.0 - pwr_thrml_fc_to_cabin_watts: 0.0 - energy_thrml_fc_to_cabin_joules: 0.0 - history: - i: [] - pwr_p_watts: [] - energy_p_joules: [] - pwr_i_watts: [] - energy_i_joules: [] - pwr_d_watts: [] - energy_d_joules: [] - cop: [] - pwr_aux_for_hvac_watts: [] - energy_aux_for_hvac_joules: [] - pwr_thrml_hvac_to_cabin_watts: [] - energy_thrml_hvac_to_cabin_joules: [] - pwr_thrml_fc_to_cabin_watts: [] - energy_thrml_fc_to_cabin_joules: [] - save_interval: ~ -mass_kilograms: 2154.564 -pwr_aux_base_watts: 700.0 -save_interval: 1 -state: - i: 0 - time_seconds: 0.0 - pwr_prop_fwd_max_watts: 0.0 - pwr_prop_bwd_max_watts: 0.0 - pwr_tractive_watts: 0.0 - pwr_tractive_for_cyc_watts: 0.0 - energy_tractive_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_drag_watts: 0.0 - energy_drag_joules: 0.0 - pwr_accel_watts: 0.0 - energy_accel_joules: 0.0 - pwr_ascent_watts: 0.0 - energy_ascent_joules: 0.0 - pwr_rr_watts: 0.0 - energy_rr_joules: 0.0 - pwr_whl_inertia_watts: 0.0 - energy_whl_inertia_joules: 0.0 - pwr_brake_watts: 0.0 - energy_brake_joules: 0.0 - cyc_met: true - cyc_met_overall: true - speed_ach_meters_per_second: 0.0 - dist_meters: 0.0 - grade_curr: 0.0 - elev_curr_meters: 0.0 - air_density_kilograms_per_cubic_meter: 0.0 - mass_kilograms: .nan -history: - i: [] - time_seconds: [] - pwr_prop_fwd_max_watts: [] - pwr_prop_bwd_max_watts: [] - pwr_tractive_watts: [] - pwr_tractive_for_cyc_watts: [] - energy_tractive_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_drag_watts: [] - energy_drag_joules: [] - pwr_accel_watts: [] - energy_accel_joules: [] - pwr_ascent_watts: [] - energy_ascent_joules: [] - pwr_rr_watts: [] - energy_rr_joules: [] - pwr_whl_inertia_watts: [] - energy_whl_inertia_joules: [] - pwr_brake_watts: [] - energy_brake_joules: [] - cyc_met: [] - cyc_met_overall: [] - speed_ach_meters_per_second: [] - dist_meters: [] - grade_curr: [] - elev_curr_meters: [] - air_density_kilograms_per_cubic_meter: [] - mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml b/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml deleted file mode 100644 index 11cbcb2c1..000000000 --- a/fastsim-core/resources/vehicles/2026_Chrysler_Pacifica_Select_Thermal_DFCO_StopStart.yaml +++ /dev/null @@ -1,366 +0,0 @@ ---- -name: 2026 Chrysler Pacifica Select (Thermal) -doc: ~ -year: 2026 -pt_type: - Conv: - fs: - pwr_out_max_watts: 2000000.0 - pwr_ramp_lag_seconds: 1.1 - energy_capacity_joules: 2305080000.0 - specific_energy_joules_per_kilogram: ~ - mass_kilograms: ~ - fc: - thrml: - FuelConverterThermal: - heat_capacitance_joules_per_kelvin: 200000 # 72132.17831078888 - length_for_convection_meters: 0.7 # 0.5427107485587468 - htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 - conductance_from_comb_watts_per_kelvin: 2178.965385428629 - max_frac_from_comb: 0.5 - tstat_te_sto_kelvin: 358.15 - tstat_te_delta_kelvin: 5.0 - tstat_interp: - data: - grid: - - v: 1 - dim: - - 2 - data: - - 85.0 - - 90.0 - values: - v: 1 - dim: - - 2 - data: - - 0.0 - - 1.0 - strategy: Linear - extrapolate: Clamp - radiator_effectiveness: 300 # 168.06311964877182 - fc_eff_model: - Exponential: - offset: 320.1873803210462 - lag: 24.998774179607892 - minimum: 0.1927168135089094 - state: - i: 0 - te_adiabatic_kelvin: 3153.8328742654194 - temperature_kelvin: 295.15 - tstat_open_frac: 0.0 - htc_to_amb_watts_per_square_meter_kelvin: 0.0 - pwr_thrml_to_amb_watts: 0.0 - energy_thrml_to_amb_joules: 0.0 - eff_coeff: 1.0 - pwr_thrml_fc_to_cab_watts: 0.0 - energy_thrml_fc_to_cab_joules: 0.0 - pwr_fuel_as_heat_watts: 0.0 - energy_fuel_as_heat_joules: 0.0 - pwr_thrml_to_tm_watts: 0.0 - energy_thrml_to_tm_joules: 0.0 - history: - i: [] - te_adiabatic_kelvin: [] - temperature_kelvin: [] - tstat_open_frac: [] - htc_to_amb_watts_per_square_meter_kelvin: [] - pwr_thrml_to_amb_watts: [] - energy_thrml_to_amb_joules: [] - eff_coeff: [] - pwr_thrml_fc_to_cab_watts: [] - energy_thrml_fc_to_cab_joules: [] - pwr_fuel_as_heat_watts: [] - energy_fuel_as_heat_joules: [] - pwr_thrml_to_tm_watts: [] - energy_thrml_to_tm_joules: [] - save_interval: ~ - mass_kilograms: ~ - specific_pwr_watts_per_kilogram: ~ - pwr_out_max_watts: 211088.0 - pwr_out_max_init_watts: 34604.59016393443 - pwr_ramp_lag_seconds: 2.0 - eff_interp_from_pwr_out: - data: - grid: - - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.005 - - 0.015 - - 0.04 - - 0.06 - - 0.1 - - 0.14 - - 0.2 - - 0.4 - - 0.6 - - 0.8 - - 1.0 - values: - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.0875106035 - - 0.143482108 - - 0.216273855 - - 0.252599848 - - 0.301508117 - - 0.33 - - 0.34 - - 0.35 - - 0.34 - - 0.32 - - 0.3 - strategy: Linear - extrapolate: Error - pwr_idle_fuel_watts: 0.0 - state: - i: 0 - pwr_out_max_watts: 0.0 - pwr_prop_max_watts: 0.0 - eff: 0.0 - pwr_prop_watts: 0.0 - energy_prop_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_fuel_watts: 0.0 - energy_fuel_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - fc_on: false - time_on_seconds: 0.0 - history: - i: [] - pwr_out_max_watts: [] - pwr_prop_max_watts: [] - eff: [] - pwr_prop_watts: [] - energy_prop_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_fuel_watts: [] - energy_fuel_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - fc_on: [] - time_on_seconds: [] - save_interval: 1 - transmission: - mass_kilograms: ~ - eff_interp: 0.95 - state: - i: 0 - pwr_out_fwd_max_watts: 0.0 - pwr_out_regen_max_watts: 0.0 - eff: 0.0 - pwr_out_watts: 0.0 - energy_out_joules: 0.0 - pwr_in_watts: 0.0 - energy_in_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - history: - i: [] - pwr_out_fwd_max_watts: [] - pwr_out_regen_max_watts: [] - eff: [] - pwr_out_watts: [] - energy_out_joules: [] - pwr_in_watts: [] - energy_in_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - save_interval: 1 - pt_cntrl: - StopStart: - fc_min_time_on_seconds: 5.0 - temp_fc_forced_on_kelvin: 333.15 # 60 C - temp_fc_allowed_off_kelvin: 348.15 # 75 C - time_delay_after_stop_until_fc_can_turn_off_seconds: 0.0 - save_interval: ~ - state: - i: 0 - fc_temperature_too_low: false - vehicle_not_stopped: false - on_time_too_short: false - time_vehicle_stopped_seconds: 0.0 - vehicle_not_stopped_long_enough: false - has_traction_power_request: false - history: - i: [] - fc_temperature_too_low: [] - vehicle_not_stopped: [] - on_time_too_short: [] - time_vehicle_stopped_seconds: [] - vehicle_not_stopped_long_enough: [] - has_traction_power_request: [] - dfco_cntrl: - dfco_enabled: true - minimum_dfco_speed_meters_per_second: 11.176 - minimum_dfco_deceleration_meters_per_second_squared: -0.2 - save_interval: ~ - state: - i: 0 - vehicle_dynamics_prevent_dfco: false - history: - i: [] - vehicle_dynamics_prevent_dfco: [] - mass_kilograms: ~ - alt_eff: 1.0 -chassis: - drag_coef: 0.3303036837542712 - frontal_area_square_meters: 3.05124164 - wheel_rr_coef: 0.0064798953284486704 - wheel_inertia_kilogram_square_meters: 0.815 - num_wheels: 4 - wheel_radius_meters: 0.36865 - tire_code: ~ - cg_height_meters: 0.53 - wheel_fric_coef: 0.8 - drive_type: FWD - drive_axle_weight_frac: 0.61 - wheel_base_meters: 3.08864 - mass_kilograms: ~ - glider_mass_kilograms: ~ - cargo_mass_kilograms: ~ -cabin: - LumpedCabin: - cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 - cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 - heat_capacitance_joules_per_kelvin: 250000 # 133887.55278894224 - length_meters: 3.302 # 130 in. estimate - width_meters: 2.02184 # Pacifica width w/o mirrors - state: - i: 0 - temperature_kelvin: 295.15 - temp_prev_kelvin: 295.15 - pwr_thrml_from_hvac_watts: 0.0 - energy_thrml_from_hvac_joules: 0.0 - pwr_thrml_from_amb_watts: 0.0 - energy_thrml_from_amb_joules: 0.0 - pwr_thrml_to_res_watts: 0.0 - energy_thrml_to_res_joules: 0.0 - reynolds_for_plate: 0.0 - history: - i: [] - temperature_kelvin: [] - temp_prev_kelvin: [] - pwr_thrml_from_hvac_watts: [] - energy_thrml_from_hvac_joules: [] - pwr_thrml_from_amb_watts: [] - energy_thrml_from_amb_joules: [] - pwr_thrml_to_res_watts: [] - energy_thrml_to_res_joules: [] - reynolds_for_plate: [] - save_interval: ~ -hvac: - LumpedCabin: - te_set_kelvin: 295.15 - te_deadband_kelvin: 0.5 - p_watts_per_kelvin: 489.34499608760177 - i: 36.77964270414921 - pwr_i_max_watts: 10000.0 - d: 5.0 - pwr_thrml_max_watts: 15000.0 - frac_of_ideal_cop: 0.0778419513178728 - heat_source: FuelConverter - pwr_aux_for_hvac_max_watts: 8000.0 - state: - i: 0 - pwr_p_watts: 0.0 - energy_p_joules: 0.0 - pwr_i_watts: 0.0 - energy_i_joules: 0.0 - pwr_d_watts: 0.0 - energy_d_joules: 0.0 - cop: ~ - pwr_aux_for_hvac_watts: 0.0 - energy_aux_for_hvac_joules: 0.0 - pwr_thrml_hvac_to_cabin_watts: 0.0 - energy_thrml_hvac_to_cabin_joules: 0.0 - pwr_thrml_fc_to_cabin_watts: 0.0 - energy_thrml_fc_to_cabin_joules: 0.0 - history: - i: [] - pwr_p_watts: [] - energy_p_joules: [] - pwr_i_watts: [] - energy_i_joules: [] - pwr_d_watts: [] - energy_d_joules: [] - cop: [] - pwr_aux_for_hvac_watts: [] - energy_aux_for_hvac_joules: [] - pwr_thrml_hvac_to_cabin_watts: [] - energy_thrml_hvac_to_cabin_joules: [] - pwr_thrml_fc_to_cabin_watts: [] - energy_thrml_fc_to_cabin_joules: [] - save_interval: ~ -mass_kilograms: 2154.564 -pwr_aux_base_watts: 700.0 -save_interval: 1 -state: - i: 0 - time_seconds: 0.0 - pwr_prop_fwd_max_watts: 0.0 - pwr_prop_bwd_max_watts: 0.0 - pwr_tractive_watts: 0.0 - pwr_tractive_for_cyc_watts: 0.0 - energy_tractive_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_drag_watts: 0.0 - energy_drag_joules: 0.0 - pwr_accel_watts: 0.0 - energy_accel_joules: 0.0 - pwr_ascent_watts: 0.0 - energy_ascent_joules: 0.0 - pwr_rr_watts: 0.0 - energy_rr_joules: 0.0 - pwr_whl_inertia_watts: 0.0 - energy_whl_inertia_joules: 0.0 - pwr_brake_watts: 0.0 - energy_brake_joules: 0.0 - cyc_met: true - cyc_met_overall: true - speed_ach_meters_per_second: 0.0 - dist_meters: 0.0 - grade_curr: 0.0 - elev_curr_meters: 0.0 - air_density_kilograms_per_cubic_meter: 0.0 - mass_kilograms: .nan -history: - i: [] - time_seconds: [] - pwr_prop_fwd_max_watts: [] - pwr_prop_bwd_max_watts: [] - pwr_tractive_watts: [] - pwr_tractive_for_cyc_watts: [] - energy_tractive_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_drag_watts: [] - energy_drag_joules: [] - pwr_accel_watts: [] - energy_accel_joules: [] - pwr_ascent_watts: [] - energy_ascent_joules: [] - pwr_rr_watts: [] - energy_rr_joules: [] - pwr_whl_inertia_watts: [] - energy_whl_inertia_joules: [] - pwr_brake_watts: [] - energy_brake_joules: [] - cyc_met: [] - cyc_met_overall: [] - speed_ach_meters_per_second: [] - dist_meters: [] - grade_curr: [] - elev_curr_meters: [] - air_density_kilograms_per_cubic_meter: [] - mass_kilograms: [] diff --git a/fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml b/fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml deleted file mode 100644 index 11cbcb2c1..000000000 --- a/fastsim-core/resources/vehicles/dummy_minivan_thrml.yaml +++ /dev/null @@ -1,366 +0,0 @@ ---- -name: 2026 Chrysler Pacifica Select (Thermal) -doc: ~ -year: 2026 -pt_type: - Conv: - fs: - pwr_out_max_watts: 2000000.0 - pwr_ramp_lag_seconds: 1.1 - energy_capacity_joules: 2305080000.0 - specific_energy_joules_per_kilogram: ~ - mass_kilograms: ~ - fc: - thrml: - FuelConverterThermal: - heat_capacitance_joules_per_kelvin: 200000 # 72132.17831078888 - length_for_convection_meters: 0.7 # 0.5427107485587468 - htc_to_amb_stop_watts_per_square_meter_kelvin: 60.7820169953251 - conductance_from_comb_watts_per_kelvin: 2178.965385428629 - max_frac_from_comb: 0.5 - tstat_te_sto_kelvin: 358.15 - tstat_te_delta_kelvin: 5.0 - tstat_interp: - data: - grid: - - v: 1 - dim: - - 2 - data: - - 85.0 - - 90.0 - values: - v: 1 - dim: - - 2 - data: - - 0.0 - - 1.0 - strategy: Linear - extrapolate: Clamp - radiator_effectiveness: 300 # 168.06311964877182 - fc_eff_model: - Exponential: - offset: 320.1873803210462 - lag: 24.998774179607892 - minimum: 0.1927168135089094 - state: - i: 0 - te_adiabatic_kelvin: 3153.8328742654194 - temperature_kelvin: 295.15 - tstat_open_frac: 0.0 - htc_to_amb_watts_per_square_meter_kelvin: 0.0 - pwr_thrml_to_amb_watts: 0.0 - energy_thrml_to_amb_joules: 0.0 - eff_coeff: 1.0 - pwr_thrml_fc_to_cab_watts: 0.0 - energy_thrml_fc_to_cab_joules: 0.0 - pwr_fuel_as_heat_watts: 0.0 - energy_fuel_as_heat_joules: 0.0 - pwr_thrml_to_tm_watts: 0.0 - energy_thrml_to_tm_joules: 0.0 - history: - i: [] - te_adiabatic_kelvin: [] - temperature_kelvin: [] - tstat_open_frac: [] - htc_to_amb_watts_per_square_meter_kelvin: [] - pwr_thrml_to_amb_watts: [] - energy_thrml_to_amb_joules: [] - eff_coeff: [] - pwr_thrml_fc_to_cab_watts: [] - energy_thrml_fc_to_cab_joules: [] - pwr_fuel_as_heat_watts: [] - energy_fuel_as_heat_joules: [] - pwr_thrml_to_tm_watts: [] - energy_thrml_to_tm_joules: [] - save_interval: ~ - mass_kilograms: ~ - specific_pwr_watts_per_kilogram: ~ - pwr_out_max_watts: 211088.0 - pwr_out_max_init_watts: 34604.59016393443 - pwr_ramp_lag_seconds: 2.0 - eff_interp_from_pwr_out: - data: - grid: - - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.005 - - 0.015 - - 0.04 - - 0.06 - - 0.1 - - 0.14 - - 0.2 - - 0.4 - - 0.6 - - 0.8 - - 1.0 - values: - v: 1 - dim: - - 12 - data: - - 0.0 - - 0.0875106035 - - 0.143482108 - - 0.216273855 - - 0.252599848 - - 0.301508117 - - 0.33 - - 0.34 - - 0.35 - - 0.34 - - 0.32 - - 0.3 - strategy: Linear - extrapolate: Error - pwr_idle_fuel_watts: 0.0 - state: - i: 0 - pwr_out_max_watts: 0.0 - pwr_prop_max_watts: 0.0 - eff: 0.0 - pwr_prop_watts: 0.0 - energy_prop_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_fuel_watts: 0.0 - energy_fuel_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - fc_on: false - time_on_seconds: 0.0 - history: - i: [] - pwr_out_max_watts: [] - pwr_prop_max_watts: [] - eff: [] - pwr_prop_watts: [] - energy_prop_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_fuel_watts: [] - energy_fuel_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - fc_on: [] - time_on_seconds: [] - save_interval: 1 - transmission: - mass_kilograms: ~ - eff_interp: 0.95 - state: - i: 0 - pwr_out_fwd_max_watts: 0.0 - pwr_out_regen_max_watts: 0.0 - eff: 0.0 - pwr_out_watts: 0.0 - energy_out_joules: 0.0 - pwr_in_watts: 0.0 - energy_in_joules: 0.0 - pwr_loss_watts: 0.0 - energy_loss_joules: 0.0 - history: - i: [] - pwr_out_fwd_max_watts: [] - pwr_out_regen_max_watts: [] - eff: [] - pwr_out_watts: [] - energy_out_joules: [] - pwr_in_watts: [] - energy_in_joules: [] - pwr_loss_watts: [] - energy_loss_joules: [] - save_interval: 1 - pt_cntrl: - StopStart: - fc_min_time_on_seconds: 5.0 - temp_fc_forced_on_kelvin: 333.15 # 60 C - temp_fc_allowed_off_kelvin: 348.15 # 75 C - time_delay_after_stop_until_fc_can_turn_off_seconds: 0.0 - save_interval: ~ - state: - i: 0 - fc_temperature_too_low: false - vehicle_not_stopped: false - on_time_too_short: false - time_vehicle_stopped_seconds: 0.0 - vehicle_not_stopped_long_enough: false - has_traction_power_request: false - history: - i: [] - fc_temperature_too_low: [] - vehicle_not_stopped: [] - on_time_too_short: [] - time_vehicle_stopped_seconds: [] - vehicle_not_stopped_long_enough: [] - has_traction_power_request: [] - dfco_cntrl: - dfco_enabled: true - minimum_dfco_speed_meters_per_second: 11.176 - minimum_dfco_deceleration_meters_per_second_squared: -0.2 - save_interval: ~ - state: - i: 0 - vehicle_dynamics_prevent_dfco: false - history: - i: [] - vehicle_dynamics_prevent_dfco: [] - mass_kilograms: ~ - alt_eff: 1.0 -chassis: - drag_coef: 0.3303036837542712 - frontal_area_square_meters: 3.05124164 - wheel_rr_coef: 0.0064798953284486704 - wheel_inertia_kilogram_square_meters: 0.815 - num_wheels: 4 - wheel_radius_meters: 0.36865 - tire_code: ~ - cg_height_meters: 0.53 - wheel_fric_coef: 0.8 - drive_type: FWD - drive_axle_weight_frac: 0.61 - wheel_base_meters: 3.08864 - mass_kilograms: ~ - glider_mass_kilograms: ~ - cargo_mass_kilograms: ~ -cabin: - LumpedCabin: - cab_shell_htc_to_amb_watts_per_square_meter_kelvin: 10.111988385072632 - cab_htc_to_amb_stop_watts_per_square_meter_kelvin: 153.22457193685642 - heat_capacitance_joules_per_kelvin: 250000 # 133887.55278894224 - length_meters: 3.302 # 130 in. estimate - width_meters: 2.02184 # Pacifica width w/o mirrors - state: - i: 0 - temperature_kelvin: 295.15 - temp_prev_kelvin: 295.15 - pwr_thrml_from_hvac_watts: 0.0 - energy_thrml_from_hvac_joules: 0.0 - pwr_thrml_from_amb_watts: 0.0 - energy_thrml_from_amb_joules: 0.0 - pwr_thrml_to_res_watts: 0.0 - energy_thrml_to_res_joules: 0.0 - reynolds_for_plate: 0.0 - history: - i: [] - temperature_kelvin: [] - temp_prev_kelvin: [] - pwr_thrml_from_hvac_watts: [] - energy_thrml_from_hvac_joules: [] - pwr_thrml_from_amb_watts: [] - energy_thrml_from_amb_joules: [] - pwr_thrml_to_res_watts: [] - energy_thrml_to_res_joules: [] - reynolds_for_plate: [] - save_interval: ~ -hvac: - LumpedCabin: - te_set_kelvin: 295.15 - te_deadband_kelvin: 0.5 - p_watts_per_kelvin: 489.34499608760177 - i: 36.77964270414921 - pwr_i_max_watts: 10000.0 - d: 5.0 - pwr_thrml_max_watts: 15000.0 - frac_of_ideal_cop: 0.0778419513178728 - heat_source: FuelConverter - pwr_aux_for_hvac_max_watts: 8000.0 - state: - i: 0 - pwr_p_watts: 0.0 - energy_p_joules: 0.0 - pwr_i_watts: 0.0 - energy_i_joules: 0.0 - pwr_d_watts: 0.0 - energy_d_joules: 0.0 - cop: ~ - pwr_aux_for_hvac_watts: 0.0 - energy_aux_for_hvac_joules: 0.0 - pwr_thrml_hvac_to_cabin_watts: 0.0 - energy_thrml_hvac_to_cabin_joules: 0.0 - pwr_thrml_fc_to_cabin_watts: 0.0 - energy_thrml_fc_to_cabin_joules: 0.0 - history: - i: [] - pwr_p_watts: [] - energy_p_joules: [] - pwr_i_watts: [] - energy_i_joules: [] - pwr_d_watts: [] - energy_d_joules: [] - cop: [] - pwr_aux_for_hvac_watts: [] - energy_aux_for_hvac_joules: [] - pwr_thrml_hvac_to_cabin_watts: [] - energy_thrml_hvac_to_cabin_joules: [] - pwr_thrml_fc_to_cabin_watts: [] - energy_thrml_fc_to_cabin_joules: [] - save_interval: ~ -mass_kilograms: 2154.564 -pwr_aux_base_watts: 700.0 -save_interval: 1 -state: - i: 0 - time_seconds: 0.0 - pwr_prop_fwd_max_watts: 0.0 - pwr_prop_bwd_max_watts: 0.0 - pwr_tractive_watts: 0.0 - pwr_tractive_for_cyc_watts: 0.0 - energy_tractive_joules: 0.0 - pwr_aux_watts: 0.0 - energy_aux_joules: 0.0 - pwr_drag_watts: 0.0 - energy_drag_joules: 0.0 - pwr_accel_watts: 0.0 - energy_accel_joules: 0.0 - pwr_ascent_watts: 0.0 - energy_ascent_joules: 0.0 - pwr_rr_watts: 0.0 - energy_rr_joules: 0.0 - pwr_whl_inertia_watts: 0.0 - energy_whl_inertia_joules: 0.0 - pwr_brake_watts: 0.0 - energy_brake_joules: 0.0 - cyc_met: true - cyc_met_overall: true - speed_ach_meters_per_second: 0.0 - dist_meters: 0.0 - grade_curr: 0.0 - elev_curr_meters: 0.0 - air_density_kilograms_per_cubic_meter: 0.0 - mass_kilograms: .nan -history: - i: [] - time_seconds: [] - pwr_prop_fwd_max_watts: [] - pwr_prop_bwd_max_watts: [] - pwr_tractive_watts: [] - pwr_tractive_for_cyc_watts: [] - energy_tractive_joules: [] - pwr_aux_watts: [] - energy_aux_joules: [] - pwr_drag_watts: [] - energy_drag_joules: [] - pwr_accel_watts: [] - energy_accel_joules: [] - pwr_ascent_watts: [] - energy_ascent_joules: [] - pwr_rr_watts: [] - energy_rr_joules: [] - pwr_whl_inertia_watts: [] - energy_whl_inertia_joules: [] - pwr_brake_watts: [] - energy_brake_joules: [] - cyc_met: [] - cyc_met_overall: [] - speed_ach_meters_per_second: [] - dist_meters: [] - grade_curr: [] - elev_curr_meters: [] - air_density_kilograms_per_cubic_meter: [] - mass_kilograms: [] diff --git a/pixi.lock b/pixi.lock index 07e594f29..a9d234374 100644 --- a/pixi.lock +++ b/pixi.lock @@ -30,7 +30,6 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda @@ -39,8 +38,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-hf4e2dac_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda @@ -54,45 +52,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/37/d8/ef374952fd5da67d4463122c2b8e5a96536ec10b4b339254c6dcde81d01c/tornado-6.5.7-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/3a/948263ca3b9d65bb2b1b0c521b3a49fad5d59ada58724bd87d2bd5ff3f36/ipython-9.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/46/5c/ca14606a42628b04d82ac6ae5742ed24048bd43fbf48ae87fc4f4b9e759d/polars_runtime_32-1.42.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/59/ef/f96536f1df42c668cbacb727a8c6da7afc9c05ece6d558927fb1722693e1/numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/10/ffb85fa380bc9c9000dc35f40f44954dde49023018501c54faab94b3a39e/polars_runtime_32-1.42.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/a9/6e73d68500f80773f65f0654ea932019d6694329a0eb0ed0533de38df376/numpy-2.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl @@ -106,10 +104,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.2-h77d7759_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.3-h8f8c405_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda @@ -117,22 +116,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - pypi: ./ - - pypi: https://files.pythonhosted.org/packages/00/6d/745dd1c1c5c284d17725e5c802ca4d45cfc6803519d777f087b71c9f4069/numpy-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1c/62/8b83fca67d478e4a2b88cbba2fbff4d533052938ff96d598b7915fd9d235/polars_runtime_32-1.42.0-cp310-abi3-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/3a/948263ca3b9d65bb2b1b0c521b3a49fad5d59ada58724bd87d2bd5ff3f36/ipython-9.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/29/16ff6e4e91d71e530d3581f45e342a9cc35072ac6b31dcbc2fa33de2569e/polars_runtime_32-1.42.1-cp310-abi3-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/7b/14687aa674250e5e546f616f486b0d56d3631cd5b2415739141ce40bdcea/numpy-2.5.1-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl @@ -143,21 +141,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/92/4f/090b1431e5a43df696feceffc268c5383cc079ecb5f08ce58f917109aafe/tornado-6.5.7-cp39-abi3-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl @@ -171,11 +170,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.3-h1b79a29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda @@ -184,18 +182,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/02/dc/c7043cab6fed8ae159fc1923ce829ada35c4dbd797d408a43858ffaf9639/tornado-6.5.7-cp39-abi3-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/8e/4f8296fcfd1347f1351342fecf13bf2430d7efbae2f1f45964ec7930a99e/polars_runtime_32-1.42.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/3a/948263ca3b9d65bb2b1b0c521b3a49fad5d59ada58724bd87d2bd5ff3f36/ipython-9.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl @@ -208,6 +206,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl @@ -216,16 +215,15 @@ environments: - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/96/e7b533ea5740641dd62b07a790af5d9d8fec36000b8e2d0472bd7574105f/numpy-2.3.2-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cf/72/06d3d78b7e8e8d3c72ea9eee310950334d50986462b3c1d40f82972495a5/polars_runtime_32-1.42.0-cp310-abi3-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e1/19/cc5bb2a3f2913d27d6dbb2c78d25921fabaedc6741d4a5a615a11f3c5bf3/numpy-2.5.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl @@ -240,7 +238,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.1-hac47afa_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.3-hf411b9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.13-h0159041_0_cpython.conda @@ -251,45 +249,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36231-h1b9f54f_39.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/3a/948263ca3b9d65bb2b1b0c521b3a49fad5d59ada58724bd87d2bd5ff3f36/ipython-9.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/66/53f31807a48a750f9d748da273bc3fcedd12b27ff1f3e373bfec55ef2dc0/numpy-2.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/77/1d/c84e30c0c674184948b66f076ab271c01d940618a2824c23cd035a27bc20/debugpy-1.8.21-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/7c/2f/244643a5ce54a94f0a9a2ab578189c061e4a87c002e037b0829dd77293b6/numpy-2.3.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bd/54/0b8355ab29669560608b2864a5e54674dd78bbd48c04976607516e081107/polars_runtime_32-1.42.0-cp310-abi3-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/a4/b393076ffb21b469eec5b328a0534cf03a3b90bfc6b1f09507cdd075d938/tornado-6.5.7-cp39-abi3-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/0e/51db89361668fe077a835fc579277f824ba526e7daf7b94d23d25439e0d0/polars_runtime_32-1.42.1-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/2f/a58a4443a4d052a4ea77557478336aefc26c7981f6408d37adba763aa758/matplotlib-3.11.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl @@ -309,7 +307,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda @@ -319,7 +316,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-hf4e2dac_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -328,32 +325,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.97.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.97.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/01/b1/1a3c4e436ad8a4c4ba3e70f4c62e1f927cbbb3c943a9bba5813b8b815bde/cachebox-5.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/cf/587f913335e3855e0ddca2aee7c3f9d5de2d75a1e23434891e9f74783bcd/python_lsp_server-1.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/bd/9c0d5d6983905ce2c9edaa073a7e89355a9cf7f396988e05d32f1c37785d/maturin-1.14.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1b/c7/94409509ade3775b4fe3e2af98c143ffbd8ee9d757f096a970ed191d41b3/moocore-0.3.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1f/0e/36044316b65ca471d3bb6d3703fd06fb50c6b727c3562f6a5a3153634f88/black-26.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/18/d8544811ab076f876c4892b3714f5b0dad335e1dc33aef826df431b8325d/plotly-6.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/85/ec72f6c885703d18f3b09769645e950e14c7d0cc0a0e35d94127983f666f/alive_progress-3.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/34/74/6230c8c2865586ce4c4b0eea994bccadd9e3e28f6acd9cade123ba8516fa/moocore-0.3.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/37/d8/ef374952fd5da67d4463122c2b8e5a96536ec10b4b339254c6dcde81d01c/tornado-6.5.7-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - pypi: https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl @@ -361,61 +357,62 @@ environments: - pypi: https://files.pythonhosted.org/packages/40/3a/948263ca3b9d65bb2b1b0c521b3a49fad5d59ada58724bd87d2bd5ff3f36/ipython-9.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/0d/92a83f4f3f0a15017a7831589d7c01408ba8eaede0028eadf6ca022050ee/pylsp_rope-0.1.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/46/5c/ca14606a42628b04d82ac6ae5742ed24048bd43fbf48ae87fc4f4b9e759d/polars_runtime_32-1.42.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/26/aaca612a0634ceede20682e692a6c55e35a94c21ba36b807cc40fe910ae1/memory_profiler-0.61.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/7b/af3d0da15bed3a8665419bb3a630585756920f4ad67abfdfef26240ebcc0/docstring_to_markdown-0.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/59/ef/f96536f1df42c668cbacb727a8c6da7afc9c05ece6d558927fb1722693e1/numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/58/29/4f1e13979a848de2a0fd385462354b58358b6e8b3d9661663e308f6e3d5d/mypy-2.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/10/ffb85fa380bc9c9000dc35f40f44954dde49023018501c54faab94b3a39e/polars_runtime_32-1.42.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/b3/7e6e9fcf4fe7e1b69a49fe6cc5a44e8224bab6283c5233c97e132f14908e/wrapt-2.2.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/65/bb/402205166c567bb0b5452e2176dbf2af4b88d3577096f53fdc95be8ef562/pymoo-0.6.1.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/f2/c9522a81c32132799a1972c39f5c5f8b4c8b9f00488a23feaa6c06f07741/cffi-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/69/18/36503ea63e1ecd0a95590d7b6b8b7d227a1e4541a154e1612a231def1bdc/graphemeu-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/ce/8c98e6604bb1ec9d03c8493c328185b69bb7533fe08f3640f0f3641bd9d1/autograd-1.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/75/35/130469d1901da2b3a5a377539b4ffcd8a5c983f1c9e3ba5ffdd8d71ae314/rope-1.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/18/719e5558e5d7459396ce48c9ce97b34683523d75f2b871ca288ec0cc5c8c/pymoo-0.6.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/88/0a/d98eb5015926a3471b164a55d70aebc85dcd2e328bb6309cc16cf3640177/pylsp_mypy-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/44/da239917f5711ca7105f7d7f9e2765716dd883b241529beafc0f28504725/pytoolconfig-1.3.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/94/f0/f2283385bb6b950b26a1410f4ce51ec27231e0b3a4b925c46366d218b198/librt-0.13.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a0/32/615eb5911859e43d054941b0d0a7d06cfa2870eba86529cf385b052b111c/mypy-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/da/5d1876984b3746c85dbd219dbfcb73c85f54ee263fd32e5b2a632ec14571/librt-0.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b2/71/4d1d479aa56d0101c40e17720c3d6ac2af7269ea0487a80b18e7bfd1a5b7/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b2/97/f63084cf55444fc110e8cb985ebfcc592af47f597d44453d778cb81bc156/ruff-0.15.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/a9/6e73d68500f80773f65f0654ea932019d6694329a0eb0ed0533de38df376/numpy-2.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/bc/c4/9a34ade542426f56a0bc042f774073d1c247ae7575363c27587788cb2b2f/ujson-5.13.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/3c/2d5297d82286f6f3d92770289fd439956b201c0a4fc7e72efb9b2293758e/pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/c5/44/7c90db15bca022fe21af37bdb69c6606bc51bc1d9c4fc4bfbdd169c6a81e/autograd-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/26/4a2bad8eb430d8d805a4642c4bff25103a37548d74ab346f8b1e024abcc5/deepdiff-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/87/b4d6c38e0ccd5e85dc54cecdf933a152c60b28fe5d993a6d8a72fa6d5896/ast_serialize-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/d9/656659d5b5d5f402b2b174cd0ba9bc827e07ce3c0bf88da65424baf64af8/python_lsp_jsonrpc-1.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d4/d4/ec46cedab6a6145e21768baa8110db3e2e836a320d8499e4ef18bc894e61/cma-4.4.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl @@ -423,45 +420,46 @@ environments: - pypi: https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f6/d8/502954a4ec0efcf264f99b65b41c3c54e65a647d9f0d6f62cd02227d242c/ipykernel-6.31.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/f9/14/abe5ce876ab5b66ee3c691bf537fcd43d037aea55d447aacf74630a8f31e/plotly-6.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/cd/7ee00d6aa023b1d0551da0da5fee3bc23c3eeea632fbfc5126d1fec52b7e/about_time-4.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.96.0-h38e4360_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.97.0-h38e4360_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.2-h77d7759_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.3-h8f8c405_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.13-ha9537fe_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.96.0-h5655b98_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.97.0-h5655b98_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - pypi: ./ - - pypi: https://files.pythonhosted.org/packages/00/6d/745dd1c1c5c284d17725e5c802ca4d45cfc6803519d777f087b71c9f4069/numpy-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/cf/587f913335e3855e0ddca2aee7c3f9d5de2d75a1e23434891e9f74783bcd/python_lsp_server-1.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/19/94/9c6b9b5f18349dd797c0e7effe0dfd51402fa15e7cb293a525d6f73ffe03/pymoo-0.6.1.6-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/1c/62/8b83fca67d478e4a2b88cbba2fbff4d533052938ff96d598b7915fd9d235/polars_runtime_32-1.42.0-cp310-abi3-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1e/85/990925db5df586ec90beb97529c853497e7f85ba0234830447faf41c3057/cffi-2.1.0-cp312-cp312-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/20/a6/64c75ec939bf24d2fd6593458aab5c522f838d0867c735b8243a81049068/pymoo-0.6.2-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/18/d8544811ab076f876c4892b3714f5b0dad335e1dc33aef826df431b8325d/plotly-6.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/99/7744b906703228264ef73bdd534df88ec1ef3de45c4e78f6d31b9e32d0c9/black-26.5.1-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/26/85/ec72f6c885703d18f3b09769645e950e14c7d0cc0a0e35d94127983f666f/alive_progress-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/9d/d825b07ee7ea9e2d61df92a860033c94e06e7300d50a1c2653aac27d24fe/ruff-0.15.21-py3-none-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2a/85/180b40628b23772692a0c76e8030114e1c0ae068470ed531919f0a5f2a4a/wrapt-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl @@ -469,18 +467,20 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/0d/92a83f4f3f0a15017a7831589d7c01408ba8eaede0028eadf6ca022050ee/pylsp_rope-0.1.17-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/26/aaca612a0634ceede20682e692a6c55e35a94c21ba36b807cc40fe910ae1/memory_profiler-0.61.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/19/ac8348ae8711c9b5ae834634f635780cab62a0f5e6f988882e048b89c2ae/ast_serialize-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/7b/af3d0da15bed3a8665419bb3a630585756920f4ad67abfdfef26240ebcc0/docstring_to_markdown-0.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/29/16ff6e4e91d71e530d3581f45e342a9cc35072ac6b31dcbc2fa33de2569e/polars_runtime_32-1.42.1-cp310-abi3-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/7b/14687aa674250e5e546f616f486b0d56d3631cd5b2415739141ce40bdcea/numpy-2.5.1-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/69/18/36503ea63e1ecd0a95590d7b6b8b7d227a1e4541a154e1612a231def1bdc/graphemeu-0.7.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6e/ce/8c98e6604bb1ec9d03c8493c328185b69bb7533fe08f3640f0f3641bd9d1/autograd-1.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/75/35/130469d1901da2b3a5a377539b4ffcd8a5c983f1c9e3ba5ffdd8d71ae314/rope-1.14.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/76/fd/da7e96fca6a05f5a80b682aa75f301e2ce870836fc444973a2c717beb945/moocore-0.3.1-cp310-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl @@ -489,86 +489,80 @@ environments: - pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/88/0a/d98eb5015926a3471b164a55d70aebc85dcd2e328bb6309cc16cf3640177/pylsp_mypy-0.7.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8b/d0/07c77e067f0838949b43bd89232c29d72efebb9d2801a9750184eb706b71/librt-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/44/da239917f5711ca7105f7d7f9e2765716dd883b241529beafc0f28504725/pytoolconfig-1.3.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/4f/090b1431e5a43df696feceffc268c5383cc079ecb5f08ce58f917109aafe/tornado-6.5.7-cp39-abi3-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/95/b1/55861beb5c339b44f9a2ba92df9e2cb1eeb4ae1eee674cdf7772c797778b/mypy-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/7d/f62b2dd8f944dc47e8693d58778020c89713e3407e1aedf7099365297395/moocore-0.3.2-cp310-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c5/44/7c90db15bca022fe21af37bdb69c6606bc51bc1d9c4fc4bfbdd169c6a81e/autograd-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c7/26/4a2bad8eb430d8d805a4642c4bff25103a37548d74ab346f8b1e024abcc5/deepdiff-9.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/d9/656659d5b5d5f402b2b174cd0ba9bc827e07ce3c0bf88da65424baf64af8/python_lsp_jsonrpc-1.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/be/fbaba7b0ee89874fb11668416dec9e5585c190b676b0796cff26a9290fe8/mypy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d4/d4/ec46cedab6a6145e21768baa8110db3e2e836a320d8499e4ef18bc894e61/cma-4.4.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/9e/dc2530acb3a60dc6e46d65abf27d1d9f86721694757906a148d90a6860de/ast_serialize-0.5.0-cp39-abi3-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e4/e7/6fa6abfc9c4c07b88f09a88466fa93c7081fd679d8e06f8f558bb4ac845c/cachebox-5.2.3-cp312-cp312-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ee/ae/b66deca15da1f7faf6952d8eddf55978482bcbfd294ed2afe2c526ea325f/ujson-5.13.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f0/f4/b2933ddae222dac338476abb872641169a5cfed2c2bb5444a5b07b32b0c3/librt-0.13.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f6/d8/502954a4ec0efcf264f99b65b41c3c54e65a647d9f0d6f62cd02227d242c/ipykernel-6.31.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f9/14/abe5ce876ab5b66ee3c691bf537fcd43d037aea55d447aacf74630a8f31e/plotly-6.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/cd/7ee00d6aa023b1d0551da0da5fee3bc23c3eeea632fbfc5126d1fec52b7e/about_time-4.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.96.0-hf6ec828_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.97.0-hf6ec828_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.3-h1b79a29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.13-h8561d8f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.96.0-h4ff7c5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.97.0-h4ff7c5d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/02/dc/c7043cab6fed8ae159fc1923ce829ada35c4dbd797d408a43858ffaf9639/tornado-6.5.7-cp39-abi3-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/8e/4f8296fcfd1347f1351342fecf13bf2430d7efbae2f1f45964ec7930a99e/polars_runtime_32-1.42.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/cf/587f913335e3855e0ddca2aee7c3f9d5de2d75a1e23434891e9f74783bcd/python_lsp_server-1.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/0b/b3/b7f770114b7d0ac92d0f76e8d93c2780844a70488a90e91821927850da86/mypy-2.1.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1b/a5/cc8a39a4ea8e425dbc94db44f35f9e5dda3e1c0fbfdfba9fe9c58db600ab/pymoo-0.6.1.6-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/26/0a/bd3d18a582f273d6c843d16bb9e22e9e16365ff7991e92f18f798e9f1224/ast_serialize-0.5.0-cp39-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/24/18/d8544811ab076f876c4892b3714f5b0dad335e1dc33aef826df431b8325d/plotly-6.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/85/ec72f6c885703d18f3b09769645e950e14c7d0cc0a0e35d94127983f666f/alive_progress-3.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl @@ -580,19 +574,19 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/5d/e44573011401fb82e9d51e97f1290ceb377800fb4eed650b96f4753b499c/pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/42/0d/92a83f4f3f0a15017a7831589d7c01408ba8eaede0028eadf6ca022050ee/pylsp_rope-0.1.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/26/aaca612a0634ceede20682e692a6c55e35a94c21ba36b807cc40fe910ae1/memory_profiler-0.61.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4b/92/e7bb136ad6b5352603732cf907ef862ca103f20f2031c1735a46300c20c9/cffi-2.1.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/7b/af3d0da15bed3a8665419bb3a630585756920f4ad67abfdfef26240ebcc0/docstring_to_markdown-0.17-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/67/6a/9087c3c4af28b93f6b840a3059a6404bb6c48dc45dafa51a0501d5e539f5/pymoo-0.6.2-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/69/18/36503ea63e1ecd0a95590d7b6b8b7d227a1e4541a154e1612a231def1bdc/graphemeu-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/ce/8c98e6604bb1ec9d03c8493c328185b69bb7533fe08f3640f0f3641bd9d1/autograd-1.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/75/35/130469d1901da2b3a5a377539b4ffcd8a5c983f1c9e3ba5ffdd8d71ae314/rope-1.14.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/76/fd/da7e96fca6a05f5a80b682aa75f301e2ce870836fc444973a2c717beb945/moocore-0.3.1-cp310-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7a/24/8493538fa4f62f982686398a5b8f68008138a75086abdea19ade64bf4255/librt-0.11.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl @@ -603,10 +597,12 @@ environments: - pypi: https://files.pythonhosted.org/packages/88/0a/d98eb5015926a3471b164a55d70aebc85dcd2e328bb6309cc16cf3640177/pylsp_mypy-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/4f/b03bcc9eaf4621ac9008dec90918d8fb4839d611666cb99eb255696c67fe/ujson-5.13.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/90/ef/db98f744ca50e6efc9c95c70ee49b77aefac31f6a3fc7c83754a42d6a74f/librt-0.13.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/92/44/da239917f5711ca7105f7d7f9e2765716dd883b241529beafc0f28504725/pytoolconfig-1.3.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/94/f2/21c90f2a16689702e2aaff45795b11018dff2c9b1242bac10d225483f676/wrapt-2.2.2-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/95/51/67e7cf11a53e40694f720457d5b3a1cdaaa3d5a9a633e482f225456b93ff/debugpy-1.8.21-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl @@ -616,49 +612,50 @@ environments: - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/7d/f62b2dd8f944dc47e8693d58778020c89713e3407e1aedf7099365297395/moocore-0.3.2-cp310-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/b7/c0/c5a3b1636dfd09c42534f2b3cf33506814f6d3e066fb0879ffa16c1ae860/black-26.5.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/96/e7b533ea5740641dd62b07a790af5d9d8fec36000b8e2d0472bd7574105f/numpy-2.3.2-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c5/44/7c90db15bca022fe21af37bdb69c6606bc51bc1d9c4fc4bfbdd169c6a81e/autograd-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/f6/ec7ec652c51db77c2f61d8573338e13e4704303265ccc658cb4031d9f354/ast_serialize-0.6.0-cp39-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/c5/8f/f79a7c5a76671b0f563d4beaa7d99fe90df4500d2c1d2ba1be0432121bcf/mypy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/c7/26/4a2bad8eb430d8d805a4642c4bff25103a37548d74ab346f8b1e024abcc5/deepdiff-9.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/d9/656659d5b5d5f402b2b174cd0ba9bc827e07ce3c0bf88da65424baf64af8/python_lsp_jsonrpc-1.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cf/72/06d3d78b7e8e8d3c72ea9eee310950334d50986462b3c1d40f82972495a5/polars_runtime_32-1.42.0-cp310-abi3-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d4/d4/ec46cedab6a6145e21768baa8110db3e2e836a320d8499e4ef18bc894e61/cma-4.4.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e1/19/cc5bb2a3f2913d27d6dbb2c78d25921fabaedc6741d4a5a615a11f3c5bf3/numpy-2.5.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f5/de/3b107712e642f063c7a9e0887c427b22cb44097de5aab36c05f2e280670c/ruff-0.15.21-py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/f6/d8/502954a4ec0efcf264f99b65b41c3c54e65a647d9f0d6f62cd02227d242c/ipykernel-6.31.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f9/14/abe5ce876ab5b66ee3c691bf537fcd43d037aea55d447aacf74630a8f31e/plotly-6.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/cd/7ee00d6aa023b1d0551da0da5fee3bc23c3eeea632fbfc5126d1fec52b7e/about_time-4.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl win-64: - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.96.0-h17fc481_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.97.0-h17fc481_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.1-hac47afa_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.3-hf411b9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.13-h0159041_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.96.0-hf8d6059_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.97.0-hf8d6059_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.5-h1b7c187_39.conda @@ -666,44 +663,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36231-h1b9f54f_39.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/08/b0/ac4f541e03fdd7e752c1e8ee766b1a6edcdff4d65930b3d593171eec02b3/pymoo-0.6.1.6-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/08/cf/587f913335e3855e0ddca2aee7c3f9d5de2d75a1e23434891e9f74783bcd/python_lsp_server-1.14.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/09/93/a21b67ddaddb89843869b78e7691d20eab5c5b869a2908cda86fd0d8f663/moocore-0.3.1-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/24/18/d8544811ab076f876c4892b3714f5b0dad335e1dc33aef826df431b8325d/plotly-6.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/85/ec72f6c885703d18f3b09769645e950e14c7d0cc0a0e35d94127983f666f/alive_progress-3.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2b/54/9a9edb45345bd6744da5ddfb6628e5d5185920494c6a67ec45b6381004cb/scipy-1.18.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/2d/0b/29ec5e1c702d15f91e61fe6d632dc122b7f8f5e10b20fdd2604194ec115d/pymoo-0.6.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2e/df/533c82a3c752ba13ae7ef238b7f8cdd272cf1475f03c63ac6cf3fcfb00b6/pytokens-0.4.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/30/fb/075c466a19ef7e32895738390cc08e9c2b6756a728eb456a52677f370395/types_seaborn-0.13.2.20260518-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/37/33/8a745436944947575b584231750a41417de1a38cf6a2e9251d1065651c09/librt-0.11.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/ab/f6370005946e36885ba431d93c45f369db3aa9178a44a88710473c7d981d/moocore-0.3.2-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/3a/948263ca3b9d65bb2b1b0c521b3a49fad5d59ada58724bd87d2bd5ff3f36/ipython-9.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/11/ca5672c7d491825bc4cd6702dea106a6b60d928707712ec257c7833ae476/ast_serialize-0.5.0-cp39-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/42/0d/92a83f4f3f0a15017a7831589d7c01408ba8eaede0028eadf6ca022050ee/pylsp_rope-0.1.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/47/ae/6710c14ecb276031cf10249f6adf5a59e2d3fdb3b5183bd59f70524067ee/ast_serialize-0.6.0-cp39-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/49/26/aaca612a0634ceede20682e692a6c55e35a94c21ba36b807cc40fe910ae1/memory_profiler-0.61.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/7b/af3d0da15bed3a8665419bb3a630585756920f4ad67abfdfef26240ebcc0/docstring_to_markdown-0.17-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/63/4b/585adeb9167b08d3cdff0032a938b0e72655c92003df4f52c3f696a1bcc2/maturin-1.14.1-py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/65/66/53f31807a48a750f9d748da273bc3fcedd12b27ff1f3e373bfec55ef2dc0/numpy-2.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/69/18/36503ea63e1ecd0a95590d7b6b8b7d227a1e4541a154e1612a231def1bdc/graphemeu-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/ce/8c98e6604bb1ec9d03c8493c328185b69bb7533fe08f3640f0f3641bd9d1/autograd-1.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/75/35/130469d1901da2b3a5a377539b4ffcd8a5c983f1c9e3ba5ffdd8d71ae314/rope-1.14.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/1d/c84e30c0c674184948b66f076ab271c01d940618a2824c23cd035a27bc20/debugpy-1.8.21-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/2f/244643a5ce54a94f0a9a2ab578189c061e4a87c002e037b0829dd77293b6/numpy-2.3.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl @@ -712,45 +708,46 @@ environments: - pypi: https://files.pythonhosted.org/packages/88/0a/d98eb5015926a3471b164a55d70aebc85dcd2e328bb6309cc16cf3640177/pylsp_mypy-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/44/da239917f5711ca7105f7d7f9e2765716dd883b241529beafc0f28504725/pytoolconfig-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/99/ee/919661478e5891a3c96e549c036e467e64563ab85995b10c53c8358e16a3/mypy-2.1.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/eb/f636456ff21a83fc13c032b58cc5dde061691546ac79efa284b2989b7982/cffi-2.1.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b3/33/dafc5808c2af43672912111d7c3354af1615f7e2be3bed7a878461abbe4d/black-26.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b5/23/d3536d8945d1bb00248d998c8dcbe678a884681ad181072daecfafe4eea6/ujson-5.13.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bd/54/0b8355ab29669560608b2864a5e54674dd78bbd48c04976607516e081107/polars_runtime_32-1.42.0-cp310-abi3-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/b8/e43466b2a6067ce91e669068f6e28d6c719a920f014b070d5c8731725de3/ruff-0.15.21-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c5/44/7c90db15bca022fe21af37bdb69c6606bc51bc1d9c4fc4bfbdd169c6a81e/autograd-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/50/3b334f887accfa811cf5c7533b8ce22c523eb009363a86401198899dadd2/cachebox-5.2.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c7/26/4a2bad8eb430d8d805a4642c4bff25103a37548d74ab346f8b1e024abcc5/deepdiff-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/7b/2da9c74c1ed25a89cc4e1c8e007ea2eb4a0f1fafa3e70d757fe3242c5c5c/librt-0.13.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/a4/b393076ffb21b469eec5b328a0534cf03a3b90bfc6b1f09507cdd075d938/tornado-6.5.7-cp39-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/d9/656659d5b5d5f402b2b174cd0ba9bc827e07ce3c0bf88da65424baf64af8/python_lsp_jsonrpc-1.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/0e/51db89361668fe077a835fc579277f824ba526e7daf7b94d23d25439e0d0/polars_runtime_32-1.42.1-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d4/d4/ec46cedab6a6145e21768baa8110db3e2e836a320d8499e4ef18bc894e61/cma-4.4.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/1b/05b212bef4d2234b5f0b551ea53ce0680d8075b2e79861c765f70b590945/mypy-2.2.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/09/0390e008a305360948fa9ce69507d041ac12cb2ee5d28e34467e2ee79391/wrapt-2.2.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/2f/a58a4443a4d052a4ea77557478336aefc26c7981f6408d37adba763aa758/matplotlib-3.11.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f6/d8/502954a4ec0efcf264f99b65b41c3c54e65a647d9f0d6f62cd02227d242c/ipykernel-6.31.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/f9/14/abe5ce876ab5b66ee3c691bf537fcd43d037aea55d447aacf74630a8f31e/plotly-6.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/fb/cd/7ee00d6aa023b1d0551da0da5fee3bc23c3eeea632fbfc5126d1fec52b7e/about_time-4.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl @@ -817,21 +814,6 @@ packages: run_exports: {} size: 81043749 timestamp: 1778860073982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a - md5: c80d8a3b84358cb967fa81e7075fbc8a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - icu >=78.3,<79.0a0 - size: 12723451 - timestamp: 1773822285671 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c md5: 18335a698559cdbcd86150a48bf54ba6 @@ -959,21 +941,20 @@ packages: - libsanitizer 15.2.0 size: 7930689 timestamp: 1778269054623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-hf4e2dac_2.conda - sha256: ba25a2aeb7092e964de2233097ffeee1e58c24803d0c67461ca8c742533100a3 - md5: e1bbbfdfbf8ff501e60402a1fc6c143d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda + sha256: 365376f4815e5e80def2b3462a2419708b7c292da0da85278386c2618621fff4 + md5: 4aed8e657e9ff156bdbe849b4df44389 depends: - __glibc >=2.17,<3.0.a0 - - icu >=78.3,<79.0a0 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.2,<4.0a0 - size: 963354 - timestamp: 1782494470513 + - libsqlite >=3.53.3,<4.0a0 + size: 962119 + timestamp: 1782519076616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc md5: 5794b3bdc38177caf969dabd3af08549 @@ -1104,15 +1085,15 @@ packages: - readline >=8.3,<9.0a0 size: 345073 timestamp: 1765813471974 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - sha256: d084a53a1ce2cea8d6f9cf45108e516a629118dd3f8fb3113d87d1dcd3eea669 - md5: 5b80270d422d9fddf028cb4ce68370b2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.97.0-h53717f1_0.conda + sha256: 2ffb498d537f5d555956d27003f8d922504c295e260c9e5360caf1344771ba51 + md5: 3719d40bc183aafc8cfc539f0f9f8cdf depends: - __glibc >=2.17,<3.0.a0 - gcc_impl_linux-64 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 - - rust-std-x86_64-unknown-linux-gnu 1.96.0 h2c6d0dc_0 + - rust-std-x86_64-unknown-linux-gnu 1.97.0 h2c6d0dc_0 - sysroot_linux-64 >=2.17 license: MIT license_family: MIT @@ -1120,8 +1101,8 @@ packages: run_exports: strong_constrains: - __glibc >=2.17 - size: 171986391 - timestamp: 1780046427552 + size: 173622696 + timestamp: 1783711533417 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac md5: cffd3bdd58090148f4cfcd831f4b26ab @@ -1206,58 +1187,58 @@ packages: run_exports: {} size: 20765069 timestamp: 1778268963689 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.96.0-hf6ec828_0.conda - sha256: d897ede88a854758ddf5a2b03068892dcfff52bb3ece156afeff85490cf4da58 - md5: cd82a9da3245e87386fd8fa9421d3ca9 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.97.0-hf6ec828_0.conda + sha256: 0b27009b2d02aeda8ea4b778a32cc004742f35d100ed2d1fb160a6c88d25faf9 + md5: 02930754aeb66acf30f7594c5e587fb8 depends: - __unix constrains: - - rust >=1.96.0,<1.96.1.0a0 + - rust >=1.97.0,<1.97.1.0a0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 32841379 - timestamp: 1780045774956 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.96.0-h38e4360_0.conda - sha256: 2a6024be0d60fa64f2c6efa764e9d872ff8557a1984f3bdf0f6ce8aa1411ab29 - md5: 5683e64a67469a977ae73288cef1aa38 + size: 34693143 + timestamp: 1783710384433 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.97.0-h38e4360_0.conda + sha256: 4ebb3d6f1496bfd0954a93178e3c80cc57031906f763fac6ac499c43d3e81fcc + md5: a912cef9ec0241d71df3a703b2da5c8e depends: - __unix constrains: - - rust >=1.96.0,<1.96.1.0a0 + - rust >=1.97.0,<1.97.1.0a0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 34491337 - timestamp: 1780045628597 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.96.0-h17fc481_0.conda - sha256: fb1081db0734e99c699faef8533bc24d8472944f41ab25eda4c815459b2957d9 - md5: 986b52c97a342446ed6c57157d4af519 + size: 34796619 + timestamp: 1783710509935 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.97.0-h17fc481_0.conda + sha256: 279bb2075c712cbe478cb21d13e5289e6d526896fc1280d82738e301a8ad2ca4 + md5: 92fe8dc94cb07c9892c7b26bdbeff164 depends: - __win constrains: - - rust >=1.96.0,<1.96.1.0a0 + - rust >=1.97.0,<1.97.1.0a0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 26422351 - timestamp: 1780047734722 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - sha256: e8c453fc331eedd6b7a02356d177802a2c03b0bc6490d86c0e63c15ef172d53f - md5: cbbc8546ba8381cb792744564cec0430 + size: 26823094 + timestamp: 1783713425728 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.97.0-h2c6d0dc_0.conda + sha256: 9b7d75e7466f5651cb78c871b85318368769761657cb29c98c2d22aa578764b7 + md5: 1b62b82641a649fa440d492fa083a069 depends: - __unix constrains: - - rust >=1.96.0,<1.96.1.0a0 + - rust >=1.97.0,<1.97.1.0a0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 36676677 - timestamp: 1780046295074 + size: 36746381 + timestamp: 1783711449395 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851 md5: 13dc3adbc692664cd3beabd216434749 @@ -1294,6 +1275,19 @@ packages: - bzip2 >=1.0.8,<2.0a0 size: 133427 timestamp: 1771350680709 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda + sha256: 1294117122d55246bb83ad5b589e2a031aacdf2d0b1f99fd338aa4394f881735 + md5: 627eca44e62e2b665eeec57a984a7f00 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - icu >=78.3,<79.0a0 + size: 12273764 + timestamp: 1773822733780 - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda sha256: 9c96cc05e056e1bba5b545cbbd57b6e01db622dc2c82934caaaa25cfb22fe666 md5: dcfdea7b7013beef0a4d744d776ea38f @@ -1334,19 +1328,20 @@ packages: - liblzma >=5.8.3,<6.0a0 size: 105724 timestamp: 1775826029494 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.2-h77d7759_2.conda - sha256: 31c090ea1fe9e16137902c4b08e2fec802748546f09c331dc6d0ea117b46479f - md5: dc19cded1d86d96cc067bed4af05852d +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.3-h8f8c405_0.conda + sha256: 84d4af77021ca28e02ff60f396575b921ed1747e459838daa0e73b4724b47953 + md5: 72d9eaef59342a3614c83d57a32f578b depends: - __osx >=11.0 + - icu >=78.3,<79.0a0 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.2,<4.0a0 - size: 1006560 - timestamp: 1782494720961 + - libsqlite >=3.53.3,<4.0a0 + size: 1012648 + timestamp: 1782519619230 - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda sha256: 4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7 md5: 30439ff30578e504ee5e0b390afc8c65 @@ -1429,19 +1424,19 @@ packages: - readline >=8.3,<9.0a0 size: 317819 timestamp: 1765813692798 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.96.0-h5655b98_0.conda - sha256: dac23f4917ceb52268efe2dcf3076dd580fd487c17881eebcb62e8d41dca1bba - md5: d0efcf568895262e164f37ecef67c419 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.97.0-h5655b98_0.conda + sha256: 426c5724121fe74ba121d10190abb2bfd87bd9f112cb022708252cd8f18b0c0e + md5: 9f4f078557567e9c1d66d944c4e56e6a depends: - - rust-std-x86_64-apple-darwin 1.96.0 h38e4360_0 + - rust-std-x86_64-apple-darwin 1.97.0 h38e4360_0 license: MIT license_family: MIT purls: [] run_exports: strong_constrains: - __osx >=11.0 - size: 199304959 - timestamp: 1780045766241 + size: 201454181 + timestamp: 1783710594468 - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda sha256: 7f0d9c320288532873e2d8486c331ec6d87919c9028208d3f6ac91dc8f99a67b md5: 6e6efb7463f8cef69dbcb4c2205bf60e @@ -1469,19 +1464,6 @@ packages: - bzip2 >=1.0.8,<2.0a0 size: 124834 timestamp: 1771350416561 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda - sha256: 3a7907a17e9937d3a46dfd41cffaf815abad59a569440d1e25177c15fd0684e5 - md5: f1182c91c0de31a7abd40cedf6a5ebef - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - icu >=78.3,<79.0a0 - size: 12361647 - timestamp: 1773822915649 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_1.conda sha256: 5af74261101e3c777399c6294b2b5d290e508153268eb2e9ff99c4d69834612f md5: a915151d5d3c5bf039f5ccc8402a436f @@ -1522,20 +1504,19 @@ packages: - liblzma >=5.8.3,<6.0a0 size: 92472 timestamp: 1775825802659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_2.conda - sha256: 3fab2b5a39cc85c4522723438401f42e4b2171e2607e3afee4c7c27b84a561bf - md5: 741552acf3c51d5b762aa2968fb61103 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.3-h1b79a29_0.conda + sha256: a73a8acd97a6599fd6e561514db9f101ca7fd984cdc0cfd91ba74c8aa9dbe067 + md5: 7184d95871a58b8258a8ea124ed5aabc depends: - __osx >=11.0 - - icu >=78.3,<79.0a0 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.2,<4.0a0 - size: 927176 - timestamp: 1782494542722 + - libsqlite >=3.53.3,<4.0a0 + size: 924912 + timestamp: 1782519136322 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05 md5: bc5a5721b6439f2f62a84f2548136082 @@ -1618,17 +1599,17 @@ packages: - readline >=8.3,<9.0a0 size: 313930 timestamp: 1765813902568 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.96.0-h4ff7c5d_0.conda - sha256: 91fe26674ea4680e2c7847fdafdc76ba0956f1026eff306aa7bfc089318720c3 - md5: 7e6a23a17d56b0960ec7799402e10273 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.97.0-h4ff7c5d_0.conda + sha256: 478e9108b61721a52c34617a714b297afc63b2bd5ee3899d1e78c6895123c1d9 + md5: f273a7c331f87847178f453f217eea12 depends: - - rust-std-aarch64-apple-darwin 1.96.0 hf6ec828_0 + - rust-std-aarch64-apple-darwin 1.97.0 hf6ec828_0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 179967376 - timestamp: 1780046072905 + size: 179646209 + timestamp: 1783710468658 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3 md5: a9d86bc62f39b94c4661716624eb21b0 @@ -1704,9 +1685,9 @@ packages: - liblzma >=5.8.3,<6.0a0 size: 106486 timestamp: 1775825663227 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.2-hf5d6505_2.conda - sha256: 3867131fd31e2eab5ca242e7dbd0633bf0cb19f69984050f000bc89ff49e8ec3 - md5: df2d25dcad18cd1095593a6fa21bb585 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.3-hf5d6505_0.conda + sha256: 692dfb73a22c873656d5e393b8f1e2b019a3c8a6486c97cb6900552e64e38c25 + md5: 051f1b2228e7517a2ef8cca5146c8967 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -1715,9 +1696,9 @@ packages: purls: [] run_exports: weak: - - libsqlite >=3.53.2,<4.0a0 - size: 1313291 - timestamp: 1782494544808 + - libsqlite >=3.53.3,<4.0a0 + size: 1315909 + timestamp: 1782519131898 - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda sha256: 88609816e0cc7452bac637aaf65783e5edf4fee8a9f8e22bdc3a75882c536061 md5: dbabbd6234dea34040e631f87676292f @@ -1778,17 +1759,17 @@ packages: - python size: 15840187 timestamp: 1772728877265 -- conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.96.0-hf8d6059_0.conda - sha256: caac31627be2428f0091fa13737e2efb0884a0dd75d169f8e13d57d44969e1b1 - md5: 2b578f2c0e20601ef2968e779ca5f9a3 +- conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.97.0-hf8d6059_0.conda + sha256: 04826e05ad468f84cbf47863c00c963484941dcf569cabc604f444ecc2a0d01a + md5: a9a80226efe9c317397f207165de4545 depends: - - rust-std-x86_64-pc-windows-msvc 1.96.0 h17fc481_0 + - rust-std-x86_64-pc-windows-msvc 1.97.0 h17fc481_0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 194064061 - timestamp: 1780047874296 + size: 191719935 + timestamp: 1783713607206 - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda sha256: 0e79810fae28f3b69fe7391b0d43f5474d6bd91d451d5f2bde02f55ae481d5e3 md5: 0481bfd9814bf525bd4b3ee4b51494c4 @@ -1863,7 +1844,7 @@ packages: - pandas>=2.1.2,<=2.3.2 - polars~=1.4 - matplotlib~=3.3 - - numpy>=1.18,<=2.3.2 + - numpy>=1.18 - seaborn>=0.11.0,<13.2 - typing-extensions~=4.12 - pyyaml==6.0.2 @@ -1883,11 +1864,6 @@ packages: - plotly~=6.0 ; extra == 'dev' - deepdiff>=8.4.2 ; extra == 'dev' requires_python: '>=3.10,<3.13' -- pypi: https://files.pythonhosted.org/packages/00/6d/745dd1c1c5c284d17725e5c802ca4d45cfc6803519d777f087b71c9f4069/numpy-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl - name: numpy - version: 2.3.2 - sha256: bc3186bea41fae9d8e90c2b4fb5f0a1f5a690682da79b92574d63f56b529080b - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/01/b1/1a3c4e436ad8a4c4ba3e70f4c62e1f927cbbb3c943a9bba5813b8b815bde/cachebox-5.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: cachebox version: 5.2.3 @@ -1898,80 +1874,16 @@ packages: version: 6.5.7 sha256: 148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/04/8e/4f8296fcfd1347f1351342fecf13bf2430d7efbae2f1f45964ec7930a99e/polars_runtime_32-1.42.1-cp310-abi3-macosx_11_0_arm64.whl + name: polars-runtime-32 + version: 1.42.1 + sha256: f6c0288be940b607dc4a7476c01e67fb6bbee93f5f1dd42c64970274c71008ba + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/05/7f/798705f5296a58ca505d600456748d1be48078eac8a7050d8a98bc9edb89/decorator-5.3.1-py3-none-any.whl name: decorator version: 5.3.1 sha256: f47fe6fdbd2edd623ecfe36875d37aba411624e2670dd395dddae1358689bb3c requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/08/4d/094819d251f2248999cb722125fd4e44ee79b753fe535338cbf442fbf45d/polars-1.42.0-py3-none-any.whl - name: polars - version: 1.42.0 - sha256: ab10cac3f2d28a6e22e22bcac69c0e51fb33cd25aee1f45105782d4fe55a3e6a - requires_dist: - - polars-runtime-32==1.42.0 - - polars-runtime-64==1.42.0 ; extra == 'rt64' - - polars-runtime-compat==1.42.0 ; extra == 'rtcompat' - - polars-cloud>=0.4.0 ; extra == 'polars-cloud' - - numpy>=1.16.0 ; extra == 'numpy' - - pandas ; extra == 'pandas' - - polars[pyarrow] ; extra == 'pandas' - - pyarrow>=7.0.0 ; extra == 'pyarrow' - - pydantic ; extra == 'pydantic' - - fastexcel>=0.9 ; extra == 'calamine' - - openpyxl>=3.0.0 ; extra == 'openpyxl' - - xlsx2csv>=0.8.0 ; extra == 'xlsx2csv' - - xlsxwriter ; extra == 'xlsxwriter' - - polars[calamine,openpyxl,xlsx2csv,xlsxwriter] ; extra == 'excel' - - adbc-driver-manager[dbapi] ; extra == 'adbc' - - adbc-driver-sqlite[dbapi] ; extra == 'adbc' - - connectorx>=0.3.2 ; extra == 'connectorx' - - sqlalchemy ; extra == 'sqlalchemy' - - polars[pandas] ; extra == 'sqlalchemy' - - polars[adbc,connectorx,sqlalchemy] ; extra == 'database' - - fsspec ; extra == 'fsspec' - - deltalake>=1.0.0,!=1.5.* ; extra == 'deltalake' - - pyiceberg>=0.7.1 ; extra == 'iceberg' - - gevent ; extra == 'async' - - cloudpickle ; extra == 'cloudpickle' - - matplotlib ; extra == 'graph' - - altair>=5.4.0 ; extra == 'plot' - - great-tables>=0.8.0 ; extra == 'style' - - tzdata ; sys_platform == 'win32' and extra == 'timezone' - - cudf-polars-cu12 ; extra == 'gpu' - - polars[async,cloudpickle,database,deltalake,excel,fsspec,graph,iceberg,numpy,pandas,plot,pyarrow,pydantic,style,timezone] ; extra == 'all' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/08/b0/ac4f541e03fdd7e752c1e8ee766b1a6edcdff4d65930b3d593171eec02b3/pymoo-0.6.1.6-cp312-cp312-win_amd64.whl - name: pymoo - version: 0.6.1.6 - sha256: 5607e0359c96691158192bd3e2b939beab6d4ed25032ef4cb79edf588c2bb475 - requires_dist: - - numpy>=1.19.3 - - scipy>=1.1 - - moocore>=0.1.7 - - autograd>=1.4 - - cma>=3.2.2 - - matplotlib>=3 - - alive-progress - - deprecated - - numba ; extra == 'dev' - - pytest ; extra == 'dev' - - nbformat ; extra == 'dev' - - jupyter ; extra == 'dev' - - pyrecorder ; extra == 'dev' - - optproblems ; extra == 'dev' - - pandas ; extra == 'dev' - - ipython ; extra == 'dev' - - ipykernel ; extra == 'dev' - - joblib ; extra == 'parallelization' - - dask[distributed] ; extra == 'parallelization' - - ray[default] ; extra == 'parallelization' - - optuna ; extra == 'others' - - numba ; extra == 'full' - - scikit-learn ; extra == 'full' - - pandas ; extra == 'full' - - pymoo[parallelization] ; extra == 'full' - - pymoo[others] ; extra == 'full' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/08/cf/587f913335e3855e0ddca2aee7c3f9d5de2d75a1e23434891e9f74783bcd/python_lsp_server-1.14.0-py3-none-any.whl name: python-lsp-server version: 1.14.0 @@ -2050,71 +1962,6 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/09/93/a21b67ddaddb89843869b78e7691d20eab5c5b869a2908cda86fd0d8f663/moocore-0.3.1-cp310-abi3-win_amd64.whl - name: moocore - version: 0.3.1 - sha256: 0d5b666bf80bc972816ba8586de77ac6eeaf2b55ab493310487c14e90d491650 - requires_dist: - - cffi>=1.17.1 - - numpy>=1.24 - - platformdirs - - botorch ; extra == 'benchmarks' - - desdeo ; extra == 'benchmarks' - - fast-pareto ; extra == 'benchmarks' - - jmetalpy>=1.8 ; extra == 'benchmarks' - - matplotlib ; extra == 'benchmarks' - - moarchiving>=1.1 ; extra == 'benchmarks' - - nevergrad ; extra == 'benchmarks' - - numba ; extra == 'benchmarks' - - numpy ; extra == 'benchmarks' - - optuna ; extra == 'benchmarks' - - pandas>=2 ; extra == 'benchmarks' - - paretoset ; extra == 'benchmarks' - - patatune ; extra == 'benchmarks' - - py-cpuinfo ; extra == 'benchmarks' - - pymoo ; extra == 'benchmarks' - - coverage[toml] ; extra == 'coverage' - - gcovr ; extra == 'coverage' - - pre-commit>=3.3.2 ; extra == 'dev' - - ruff>=0.11.2 ; extra == 'dev' - - tox>=4.6.2 ; extra == 'dev' - - ipykernel ; extra == 'docs' - - ipywidgets ; extra == 'docs' - - jupyter ; extra == 'docs' - - jupyterlab ; extra == 'docs' - - kaleido ; extra == 'docs' - - pandas>=2 ; extra == 'docs' - - plotly ; extra == 'docs' - - pydata-sphinx-theme>=0.16 ; extra == 'docs' - - seaborn ; extra == 'docs' - - sphinx>=6 ; extra == 'docs' - - sphinx-autodoc-typehints ; extra == 'docs' - - sphinx-copybutton ; extra == 'docs' - - sphinx-design ; extra == 'docs' - - sphinx-gallery>=0.19 ; extra == 'docs' - - sphinxcontrib-bibtex ; extra == 'docs' - - sphinxcontrib-napoleon ; extra == 'docs' - - pandas>=2 ; extra == 'test' - - pytest>7 ; extra == 'test' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/0b/b3/b7f770114b7d0ac92d0f76e8d93c2780844a70488a90e91821927850da86/mypy-2.1.0-cp312-cp312-macosx_11_0_arm64.whl - name: mypy - version: 2.1.0 - sha256: 4ec7c57657493c7a75534df2751c8ae2cda383c16ecc55d2106c54476b1b16f6 - requires_dist: - - typing-extensions>=4.6.0 ; python_full_version < '3.15' - - typing-extensions>=4.14.0 ; python_full_version >= '3.15' - - mypy-extensions>=1.0.0 - - pathspec>=1.0.0 - - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.11.0 ; platform_python_implementation != 'PyPy' - - ast-serialize>=0.3.0,<1.0.0 - - psutil>=4.0 ; extra == 'dmypy' - - setuptools>=50 ; extra == 'mypyc' - - lxml ; extra == 'reports' - - pip ; extra == 'install-types' - - orjson ; extra == 'faster-cache' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/0b/e0/99ec5b02203c4e9ce878bc63d8caa06ac1f891e4d63bded9a5ced70fcb4f/pandas_stubs-3.0.3.260530-py3-none-any.whl name: pandas-stubs version: 3.0.3.260530 @@ -2156,43 +2003,6 @@ packages: - pytest-cov~=6.0.0 ; extra == 'test' - python-dotenv~=1.0.0 ; extra == 'test' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - name: typing-extensions - version: 4.15.0 - sha256: f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/19/94/9c6b9b5f18349dd797c0e7effe0dfd51402fa15e7cb293a525d6f73ffe03/pymoo-0.6.1.6-cp312-cp312-macosx_10_13_universal2.whl - name: pymoo - version: 0.6.1.6 - sha256: fd4715b4015b10ad3cf02e5eb9abb57fe4bfa4d3378f9076b76d60c1ddfa46d6 - requires_dist: - - numpy>=1.19.3 - - scipy>=1.1 - - moocore>=0.1.7 - - autograd>=1.4 - - cma>=3.2.2 - - matplotlib>=3 - - alive-progress - - deprecated - - numba ; extra == 'dev' - - pytest ; extra == 'dev' - - nbformat ; extra == 'dev' - - jupyter ; extra == 'dev' - - pyrecorder ; extra == 'dev' - - optproblems ; extra == 'dev' - - pandas ; extra == 'dev' - - ipython ; extra == 'dev' - - ipykernel ; extra == 'dev' - - joblib ; extra == 'parallelization' - - dask[distributed] ; extra == 'parallelization' - - ray[default] ; extra == 'parallelization' - - optuna ; extra == 'others' - - numba ; extra == 'full' - - scikit-learn ; extra == 'full' - - pandas ; extra == 'full' - - pymoo[parallelization] ; extra == 'full' - - pymoo[others] ; extra == 'full' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl name: contourpy version: 1.3.3 @@ -2227,21 +2037,98 @@ packages: - patchelf ; extra == 'patchelf' - ziglang>=0.10.0 ; extra == 'zig' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/1b/a5/cc8a39a4ea8e425dbc94db44f35f9e5dda3e1c0fbfdfba9fe9c58db600ab/pymoo-0.6.1.6-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/1b/c7/94409509ade3775b4fe3e2af98c143ffbd8ee9d757f096a970ed191d41b3/moocore-0.3.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: moocore + version: 0.3.2 + sha256: 8557a411c1b3f9fee90263701ad3fe58dbbcdc8e2b695696358fda5f968accfb + requires_dist: + - cffi>=1.17.1 + - numpy>=1.24 + - platformdirs + - botorch ; extra == 'benchmarks' + - desdeo ; extra == 'benchmarks' + - fast-pareto ; extra == 'benchmarks' + - jmetalpy>=1.8 ; extra == 'benchmarks' + - matplotlib ; extra == 'benchmarks' + - moarchiving>=1.1 ; extra == 'benchmarks' + - nevergrad ; extra == 'benchmarks' + - numba ; extra == 'benchmarks' + - numpy ; extra == 'benchmarks' + - optuna ; extra == 'benchmarks' + - pandas>=2 ; extra == 'benchmarks' + - paretoset ; extra == 'benchmarks' + - patatune ; extra == 'benchmarks' + - py-cpuinfo ; extra == 'benchmarks' + - pymoo ; extra == 'benchmarks' + - coverage[toml] ; extra == 'coverage' + - gcovr ; extra == 'coverage' + - pre-commit>=3.3.2 ; extra == 'dev' + - ruff>=0.11.2 ; extra == 'dev' + - tox>=4.6.2 ; extra == 'dev' + - ipykernel ; extra == 'docs' + - ipywidgets ; extra == 'docs' + - jupyter ; extra == 'docs' + - jupyterlab ; extra == 'docs' + - kaleido ; extra == 'docs' + - pandas>=2 ; extra == 'docs' + - plotly ; extra == 'docs' + - pydata-sphinx-theme>=0.16 ; extra == 'docs' + - seaborn ; extra == 'docs' + - sphinx>=6 ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-design ; extra == 'docs' + - sphinx-gallery>=0.19 ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinxcontrib-napoleon ; extra == 'docs' + - pandas>=2 ; extra == 'test' + - pytest>7 ; extra == 'test' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/1e/85/990925db5df586ec90beb97529c853497e7f85ba0234830447faf41c3057/cffi-2.1.0-cp312-cp312-macosx_10_15_x86_64.whl + name: cffi + version: 2.1.0 + sha256: df2b82571a1b30f58a87bf4e5a9e78d2b1eff6c6ce8fd3aa3757221f93f0863f + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/1f/0e/36044316b65ca471d3bb6d3703fd06fb50c6b727c3562f6a5a3153634f88/black-26.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: black + version: 26.5.1 + sha256: 9d98d4137277c75dfb898ec8d846c4fd68ba1e9cf77f95e2865c203dc18f4c3d + requires_dist: + - click>=8.0.0 + - mypy-extensions>=0.4.3 + - packaging>=22.0 + - pathspec>=1.0.0 + - platformdirs>=2 + - pytokens~=0.4.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - typing-extensions>=4.0.1 ; python_full_version < '3.11' + - colorama>=0.4.3 ; extra == 'colorama' + - aiohttp>=3.10 ; extra == 'd' + - ipython>=7.8.0 ; extra == 'jupyter' + - tokenize-rt>=3.2.0 ; extra == 'jupyter' + - uvloop>=0.15.2 ; sys_platform != 'win32' and extra == 'uvloop' + - winloop>=0.5.0 ; sys_platform == 'win32' and extra == 'uvloop' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/20/a6/64c75ec939bf24d2fd6593458aab5c522f838d0867c735b8243a81049068/pymoo-0.6.2-cp312-cp312-macosx_10_13_universal2.whl name: pymoo - version: 0.6.1.6 - sha256: f62fb1e2ba15f22ff5569c6d364dbf9dfe8b3722a114e6bc1df3cc10f8dd5044 + version: 0.6.2 + sha256: 749fb57867fd8fda744261d00fbab52a425f7c36cc3343c0126a91505d754b98 requires_dist: - numpy>=1.19.3 - scipy>=1.1 - moocore>=0.1.7 - autograd>=1.4 - - cma>=3.2.2 + - cma>=3.4.0 - matplotlib>=3 - alive-progress - deprecated - numba ; extra == 'dev' - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pyclawd ; extra == 'dev' + - pytest-xvfb ; extra == 'dev' - nbformat ; extra == 'dev' - jupyter ; extra == 'dev' - pyrecorder ; extra == 'dev' @@ -2259,35 +2146,87 @@ packages: - pymoo[parallelization] ; extra == 'full' - pymoo[others] ; extra == 'full' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/1c/62/8b83fca67d478e4a2b88cbba2fbff4d533052938ff96d598b7915fd9d235/polars_runtime_32-1.42.0-cp310-abi3-macosx_10_12_x86_64.whl - name: polars-runtime-32 - version: 1.42.0 - sha256: d235a5e8349797c16b70ad573fb9ddbd7f162796884bcbd25260908f8408affc - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/1f/0e/36044316b65ca471d3bb6d3703fd06fb50c6b727c3562f6a5a3153634f88/black-26.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: black - version: 26.5.1 - sha256: 9d98d4137277c75dfb898ec8d846c4fd68ba1e9cf77f95e2865c203dc18f4c3d - requires_dist: - - click>=8.0.0 - - mypy-extensions>=0.4.3 - - packaging>=22.0 - - pathspec>=1.0.0 - - platformdirs>=2 - - pytokens~=0.4.0 - - tomli>=1.1.0 ; python_full_version < '3.11' - - typing-extensions>=4.0.1 ; python_full_version < '3.11' - - colorama>=0.4.3 ; extra == 'colorama' - - aiohttp>=3.10 ; extra == 'd' - - ipython>=7.8.0 ; extra == 'jupyter' - - tokenize-rt>=3.2.0 ; extra == 'jupyter' - - uvloop>=0.15.2 ; sys_platform != 'win32' and extra == 'uvloop' - - winloop>=0.5.0 ; sys_platform == 'win32' and extra == 'uvloop' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl name: ptyprocess version: 0.7.0 sha256: 4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 +- pypi: https://files.pythonhosted.org/packages/24/18/d8544811ab076f876c4892b3714f5b0dad335e1dc33aef826df431b8325d/plotly-6.9.0-py3-none-any.whl + name: plotly + version: 6.9.0 + sha256: 36bebe2f1bb13884774fe61689c329071446f6ce4a8927fb1f0d6fb24f581236 + requires_dist: + - narwhals>=1.15.1 + - packaging + - anywidget ; extra == 'dev' + - build ; extra == 'dev' + - colorcet ; extra == 'dev' + - fiona<=1.9.6 ; python_full_version < '3.9' and extra == 'dev' + - geopandas ; extra == 'dev' + - inflect ; extra == 'dev' + - jupyterlab ; extra == 'dev' + - kaleido>=1.3.0 ; extra == 'dev' + - numpy>=1.22 ; extra == 'dev' + - orjson ; extra == 'dev' + - pandas ; extra == 'dev' + - pdfrw ; extra == 'dev' + - pillow ; extra == 'dev' + - plotly-geo ; extra == 'dev' + - polars[timezone] ; extra == 'dev' + - pyarrow ; extra == 'dev' + - pyshp ; extra == 'dev' + - pytest ; extra == 'dev' + - pytz ; extra == 'dev' + - requests ; extra == 'dev' + - ruff==0.11.12 ; extra == 'dev' + - scikit-image ; extra == 'dev' + - scipy ; extra == 'dev' + - shapely ; extra == 'dev' + - statsmodels ; extra == 'dev' + - vaex ; python_full_version < '3.10' and extra == 'dev' + - xarray ; extra == 'dev' + - build ; extra == 'dev-build' + - jupyterlab ; extra == 'dev-build' + - pytest ; extra == 'dev-build' + - requests ; extra == 'dev-build' + - ruff==0.11.12 ; extra == 'dev-build' + - pytest ; extra == 'dev-core' + - requests ; extra == 'dev-core' + - ruff==0.11.12 ; extra == 'dev-core' + - anywidget ; extra == 'dev-optional' + - build ; extra == 'dev-optional' + - colorcet ; extra == 'dev-optional' + - fiona<=1.9.6 ; python_full_version < '3.9' and extra == 'dev-optional' + - geopandas ; extra == 'dev-optional' + - inflect ; extra == 'dev-optional' + - jupyterlab ; extra == 'dev-optional' + - kaleido>=1.3.0 ; extra == 'dev-optional' + - numpy>=1.22 ; extra == 'dev-optional' + - orjson ; extra == 'dev-optional' + - pandas ; extra == 'dev-optional' + - pdfrw ; extra == 'dev-optional' + - pillow ; extra == 'dev-optional' + - plotly-geo ; extra == 'dev-optional' + - polars[timezone] ; extra == 'dev-optional' + - pyarrow ; extra == 'dev-optional' + - pyshp ; extra == 'dev-optional' + - pytest ; extra == 'dev-optional' + - pytz ; extra == 'dev-optional' + - requests ; extra == 'dev-optional' + - ruff==0.11.12 ; extra == 'dev-optional' + - scikit-image ; extra == 'dev-optional' + - scipy ; extra == 'dev-optional' + - shapely ; extra == 'dev-optional' + - statsmodels ; extra == 'dev-optional' + - vaex ; python_full_version < '3.10' and extra == 'dev-optional' + - xarray ; extra == 'dev-optional' + - numpy>=1,<2 ; extra == 'dev-pandas1' + - pandas>=1,<2 ; extra == 'dev-pandas1' + - setuptools<82 ; extra == 'dev-pandas1' + - pandas>=2,<3 ; extra == 'dev-pandas2' + - pandas>=3 ; python_full_version >= '3.11' and extra == 'dev-pandas3' + - numpy>=1.22 ; extra == 'express' + - kaleido>=1.3.0 ; extra == 'kaleido' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/24/99/7744b906703228264ef73bdd534df88ec1ef3de45c4e78f6d31b9e32d0c9/black-26.5.1-cp312-cp312-macosx_10_13_x86_64.whl name: black version: 26.5.1 @@ -2308,11 +2247,6 @@ packages: - uvloop>=0.15.2 ; sys_platform != 'win32' and extra == 'uvloop' - winloop>=0.5.0 ; sys_platform == 'win32' and extra == 'uvloop' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/26/0a/bd3d18a582f273d6c843d16bb9e22e9e16365ff7991e92f18f798e9f1224/ast_serialize-0.5.0-cp39-abi3-macosx_11_0_arm64.whl - name: ast-serialize - version: 0.5.0 - sha256: bf683d6363edf2b39eed6b6d4fe22d34b6203867a67e27134d9e2a2680c4bc4a - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/26/85/ec72f6c885703d18f3b09769645e950e14c7d0cc0a0e35d94127983f666f/alive_progress-3.3.0-py3-none-any.whl name: alive-progress version: 3.3.0 @@ -2417,6 +2351,11 @@ packages: version: 1.1.0 sha256: 58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/28/9d/d825b07ee7ea9e2d61df92a860033c94e06e7300d50a1c2653aac27d24fe/ruff-0.15.21-py3-none-macosx_10_12_x86_64.whl + name: ruff + version: 0.15.21 + sha256: 0f212c5d7d54c01bbfe6dcab02b724a39300f3e34ed7acbe995ccb320a2c58bd + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/2a/85/180b40628b23772692a0c76e8030114e1c0ae068470ed531919f0a5f2a4a/wrapt-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl name: wrapt version: 2.2.2 @@ -2471,6 +2410,41 @@ packages: - ruff>=0.12.0 ; extra == 'dev' - cython-lint>=0.12.2 ; extra == 'dev' requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/2d/0b/29ec5e1c702d15f91e61fe6d632dc122b7f8f5e10b20fdd2604194ec115d/pymoo-0.6.2-cp312-cp312-win_amd64.whl + name: pymoo + version: 0.6.2 + sha256: 3e4b8ec6e2c2c20408843ffa62d57d90a76817fefd5fc17c4540515d6bfb8a92 + requires_dist: + - numpy>=1.19.3 + - scipy>=1.1 + - moocore>=0.1.7 + - autograd>=1.4 + - cma>=3.4.0 + - matplotlib>=3 + - alive-progress + - deprecated + - numba ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pyclawd ; extra == 'dev' + - pytest-xvfb ; extra == 'dev' + - nbformat ; extra == 'dev' + - jupyter ; extra == 'dev' + - pyrecorder ; extra == 'dev' + - optproblems ; extra == 'dev' + - pandas ; extra == 'dev' + - ipython ; extra == 'dev' + - ipykernel ; extra == 'dev' + - joblib ; extra == 'parallelization' + - dask[distributed] ; extra == 'parallelization' + - ray[default] ; extra == 'parallelization' + - optuna ; extra == 'others' + - numba ; extra == 'full' + - scikit-learn ; extra == 'full' + - pandas ; extra == 'full' + - pymoo[parallelization] ; extra == 'full' + - pymoo[others] ; extra == 'full' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/2e/df/533c82a3c752ba13ae7ef238b7f8cdd272cf1475f03c63ac6cf3fcfb00b6/pytokens-0.4.1-cp312-cp312-win_amd64.whl name: pytokens version: 0.4.1 @@ -2495,58 +2469,37 @@ packages: - numpy>=1.20 - pandas-stubs requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/34/74/6230c8c2865586ce4c4b0eea994bccadd9e3e28f6acd9cade123ba8516fa/moocore-0.3.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: moocore - version: 0.3.1 - sha256: bd0a65e501e704e5270d564c3b32438ddac34d22d3c5c54b01b8c897f4d949aa +- pypi: https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl + name: pillow + version: 12.3.0 + sha256: ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965 requires_dist: - - cffi>=1.17.1 - - numpy>=1.24 - - platformdirs - - botorch ; extra == 'benchmarks' - - desdeo ; extra == 'benchmarks' - - fast-pareto ; extra == 'benchmarks' - - jmetalpy>=1.8 ; extra == 'benchmarks' - - matplotlib ; extra == 'benchmarks' - - moarchiving>=1.1 ; extra == 'benchmarks' - - nevergrad ; extra == 'benchmarks' - - numba ; extra == 'benchmarks' - - numpy ; extra == 'benchmarks' - - optuna ; extra == 'benchmarks' - - pandas>=2 ; extra == 'benchmarks' - - paretoset ; extra == 'benchmarks' - - patatune ; extra == 'benchmarks' - - py-cpuinfo ; extra == 'benchmarks' - - pymoo ; extra == 'benchmarks' - - coverage[toml] ; extra == 'coverage' - - gcovr ; extra == 'coverage' - - pre-commit>=3.3.2 ; extra == 'dev' - - ruff>=0.11.2 ; extra == 'dev' - - tox>=4.6.2 ; extra == 'dev' - - ipykernel ; extra == 'docs' - - ipywidgets ; extra == 'docs' - - jupyter ; extra == 'docs' - - jupyterlab ; extra == 'docs' - - kaleido ; extra == 'docs' - - pandas>=2 ; extra == 'docs' - - plotly ; extra == 'docs' - - pydata-sphinx-theme>=0.16 ; extra == 'docs' - - seaborn ; extra == 'docs' - - sphinx>=6 ; extra == 'docs' - - sphinx-autodoc-typehints ; extra == 'docs' + - furo ; extra == 'docs' + - olefile ; extra == 'docs' + - sphinx>=8.2 ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - - sphinx-design ; extra == 'docs' - - sphinx-gallery>=0.19 ; extra == 'docs' - - sphinxcontrib-bibtex ; extra == 'docs' - - sphinxcontrib-napoleon ; extra == 'docs' - - pandas>=2 ; extra == 'test' - - pytest>7 ; extra == 'test' + - sphinx-inline-tabs ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - olefile ; extra == 'fpx' + - olefile ; extra == 'mic' + - arro3-compute ; extra == 'test-arrow' + - arro3-core ; extra == 'test-arrow' + - nanoarrow ; extra == 'test-arrow' + - pyarrow ; extra == 'test-arrow' + - coverage>=7.4.2 ; extra == 'tests' + - defusedxml ; extra == 'tests' + - markdown2 ; extra == 'tests' + - olefile ; extra == 'tests' + - packaging ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-timeout ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - setuptools ; extra == 'tests' + - trove-classifiers>=2024.10.12 ; extra == 'tests' + - defusedxml ; extra == 'xmp' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/37/33/8a745436944947575b584231750a41417de1a38cf6a2e9251d1065651c09/librt-0.11.0-cp312-cp312-win_amd64.whl - name: librt - version: 0.11.0 - sha256: 75672f0bc524ede266287d532d7923dbce94c7514ad07627bac3d0c6d92cc4d9 - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/37/d8/ef374952fd5da67d4463122c2b8e5a96536ec10b4b339254c6dcde81d01c/tornado-6.5.7-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl name: tornado version: 6.5.7 @@ -2604,6 +2557,53 @@ packages: version: 5.2.3 sha256: f3162758792626685ec34950eedd565d015b115d0ff0d751d2716031fc32d51b requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3b/ab/f6370005946e36885ba431d93c45f369db3aa9178a44a88710473c7d981d/moocore-0.3.2-cp310-abi3-win_amd64.whl + name: moocore + version: 0.3.2 + sha256: aaed31c1a434a846502f922f86766205c3f9d43642fa73782b1b5a5136de0573 + requires_dist: + - cffi>=1.17.1 + - numpy>=1.24 + - platformdirs + - botorch ; extra == 'benchmarks' + - desdeo ; extra == 'benchmarks' + - fast-pareto ; extra == 'benchmarks' + - jmetalpy>=1.8 ; extra == 'benchmarks' + - matplotlib ; extra == 'benchmarks' + - moarchiving>=1.1 ; extra == 'benchmarks' + - nevergrad ; extra == 'benchmarks' + - numba ; extra == 'benchmarks' + - numpy ; extra == 'benchmarks' + - optuna ; extra == 'benchmarks' + - pandas>=2 ; extra == 'benchmarks' + - paretoset ; extra == 'benchmarks' + - patatune ; extra == 'benchmarks' + - py-cpuinfo ; extra == 'benchmarks' + - pymoo ; extra == 'benchmarks' + - coverage[toml] ; extra == 'coverage' + - gcovr ; extra == 'coverage' + - pre-commit>=3.3.2 ; extra == 'dev' + - ruff>=0.11.2 ; extra == 'dev' + - tox>=4.6.2 ; extra == 'dev' + - ipykernel ; extra == 'docs' + - ipywidgets ; extra == 'docs' + - jupyter ; extra == 'docs' + - jupyterlab ; extra == 'docs' + - kaleido ; extra == 'docs' + - pandas>=2 ; extra == 'docs' + - plotly ; extra == 'docs' + - pydata-sphinx-theme>=0.16 ; extra == 'docs' + - seaborn ; extra == 'docs' + - sphinx>=6 ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-design ; extra == 'docs' + - sphinx-gallery>=0.19 ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinxcontrib-napoleon ; extra == 'docs' + - pandas>=2 ; extra == 'test' + - pytest>7 ; extra == 'test' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/3f/6f/56d39bf385c5c27988aebaf0c18a2a17e960575740100973511018bd904e/jupyter_client-8.9.1-py3-none-any.whl name: jupyter-client version: 8.9.1 @@ -2696,11 +2696,6 @@ packages: - pytest ; extra == 'test' - matplotlib ; extra == 'test' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/41/11/ca5672c7d491825bc4cd6702dea106a6b60d928707712ec257c7833ae476/ast_serialize-0.5.0-cp39-abi3-win_amd64.whl - name: ast-serialize - version: 0.5.0 - sha256: cf25572c526add400f26a4750dc6ce0c3bb93fc1f75e7ae0cad4ce4f2cd5c590 - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/41/5d/e44573011401fb82e9d51e97f1290ceb377800fb4eed650b96f4753b499c/pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl name: pytokens version: 0.4.1 @@ -2731,38 +2726,6 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' requires_python: '>=3.6' -- pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - name: pillow - version: 12.2.0 - sha256: 62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780 - requires_dist: - - furo ; extra == 'docs' - - olefile ; extra == 'docs' - - sphinx>=8.2 ; extra == 'docs' - - sphinx-autobuild ; extra == 'docs' - - sphinx-copybutton ; extra == 'docs' - - sphinx-inline-tabs ; extra == 'docs' - - sphinxext-opengraph ; extra == 'docs' - - olefile ; extra == 'fpx' - - olefile ; extra == 'mic' - - arro3-compute ; extra == 'test-arrow' - - arro3-core ; extra == 'test-arrow' - - nanoarrow ; extra == 'test-arrow' - - pyarrow ; extra == 'test-arrow' - - check-manifest ; extra == 'tests' - - coverage>=7.4.2 ; extra == 'tests' - - defusedxml ; extra == 'tests' - - markdown2 ; extra == 'tests' - - olefile ; extra == 'tests' - - packaging ; extra == 'tests' - - pyroma>=5 ; extra == 'tests' - - pytest ; extra == 'tests' - - pytest-cov ; extra == 'tests' - - pytest-timeout ; extra == 'tests' - - pytest-xdist ; extra == 'tests' - - trove-classifiers>=2024.10.12 ; extra == 'tests' - - defusedxml ; extra == 'xmp' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl name: fonttools version: 4.63.0 @@ -2797,38 +2760,42 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/46/5c/ca14606a42628b04d82ac6ae5742ed24048bd43fbf48ae87fc4f4b9e759d/polars_runtime_32-1.42.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: polars-runtime-32 - version: 1.42.0 - sha256: 1a3c43d4a76360bf912f8772b5ac1c23d5a8efef71408c63bba1bb0b4897a8ea - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl - name: ruff - version: 0.15.20 - sha256: c5b16cdd67ca108185cd36dce98c576350c03b1660a751de725fb049193a0632 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - name: narwhals - version: 2.22.1 - sha256: 60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53 +- pypi: https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl + name: pillow + version: 12.3.0 + sha256: a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09 requires_dist: - - cudf-cu12>=24.10.0 ; sys_platform == 'linux' and extra == 'cudf' - - dask[dataframe]>=2024.8 ; extra == 'dask' - - duckdb>=1.1 ; extra == 'duckdb' - - ibis-framework>=6.0.0 ; extra == 'ibis' - - rich>=12.4.4 ; extra == 'ibis' - - packaging>=21.3 ; extra == 'ibis' - - pyarrow-hotfix>=0.7 ; extra == 'ibis' - - modin>=0.22.0 ; extra == 'modin' - - pandas>=1.3.4 ; extra == 'pandas' - - polars>=0.20.4 ; extra == 'polars' - - pyarrow>=13.0.0 ; extra == 'pyarrow' - - pyspark>=3.5.0 ; extra == 'pyspark' - - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' - - narwhals[duckdb] ; extra == 'sql' - - sqlparse>=0.5.5 ; extra == 'sql' - - sqlframe>=3.22.0,!=3.39.3 ; extra == 'sqlframe' + - furo ; extra == 'docs' + - olefile ; extra == 'docs' + - sphinx>=8.2 ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-inline-tabs ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - olefile ; extra == 'fpx' + - olefile ; extra == 'mic' + - arro3-compute ; extra == 'test-arrow' + - arro3-core ; extra == 'test-arrow' + - nanoarrow ; extra == 'test-arrow' + - pyarrow ; extra == 'test-arrow' + - coverage>=7.4.2 ; extra == 'tests' + - defusedxml ; extra == 'tests' + - markdown2 ; extra == 'tests' + - olefile ; extra == 'tests' + - packaging ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-timeout ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - setuptools ; extra == 'tests' + - trove-classifiers>=2024.10.12 ; extra == 'tests' + - defusedxml ; extra == 'xmp' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/47/ae/6710c14ecb276031cf10249f6adf5a59e2d3fdb3b5183bd59f70524067ee/ast_serialize-0.6.0-cp39-abi3-win_amd64.whl + name: ast-serialize + version: 0.6.0 + sha256: 113b58346f9ceb664352032770caca817d4a3c86f611c6088e6ef65ddaa70f0e + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/49/26/aaca612a0634ceede20682e692a6c55e35a94c21ba36b807cc40fe910ae1/memory_profiler-0.61.0-py3-none-any.whl name: memory-profiler version: 0.61.0 @@ -2836,6 +2803,23 @@ packages: requires_dist: - psutil requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl + name: typing-extensions + version: 4.16.0 + sha256: 481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/4b/92/e7bb136ad6b5352603732cf907ef862ca103f20f2031c1735a46300c20c9/cffi-2.1.0-cp312-cp312-macosx_11_0_arm64.whl + name: cffi + version: 2.1.0 + sha256: 78474632761faa0fb96f30b1c928c84ebcf68713cbb80d15bab09dfe61640fde + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/52/19/ac8348ae8711c9b5ae834634f635780cab62a0f5e6f988882e048b89c2ae/ast_serialize-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl + name: ast-serialize + version: 0.6.0 + sha256: 093cb8bb91b720d8523580498d031791bb1bbaa048599c3d21085d380e11a596 + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl name: contourpy version: 1.3.3 @@ -2866,88 +2850,42 @@ packages: version: 1.6.0 sha256: e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 requires_dist: - - pre-commit ; extra == 'dev' - - tox ; extra == 'dev' - - pytest ; extra == 'testing' - - pytest-benchmark ; extra == 'testing' - - coverage ; extra == 'testing' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/56/7b/af3d0da15bed3a8665419bb3a630585756920f4ad67abfdfef26240ebcc0/docstring_to_markdown-0.17-py3-none-any.whl - name: docstring-to-markdown - version: '0.17' - sha256: fd7d5094aa83943bf5f9e1a13701866b7c452eac19765380dead666e36d3711c - requires_dist: - - importlib-metadata>=3.6 - - typing-extensions>=4.6 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl - name: pillow - version: 12.2.0 - sha256: 2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5 - requires_dist: - - furo ; extra == 'docs' - - olefile ; extra == 'docs' - - sphinx>=8.2 ; extra == 'docs' - - sphinx-autobuild ; extra == 'docs' - - sphinx-copybutton ; extra == 'docs' - - sphinx-inline-tabs ; extra == 'docs' - - sphinxext-opengraph ; extra == 'docs' - - olefile ; extra == 'fpx' - - olefile ; extra == 'mic' - - arro3-compute ; extra == 'test-arrow' - - arro3-core ; extra == 'test-arrow' - - nanoarrow ; extra == 'test-arrow' - - pyarrow ; extra == 'test-arrow' - - check-manifest ; extra == 'tests' - - coverage>=7.4.2 ; extra == 'tests' - - defusedxml ; extra == 'tests' - - markdown2 ; extra == 'tests' - - olefile ; extra == 'tests' - - packaging ; extra == 'tests' - - pyroma>=5 ; extra == 'tests' - - pytest ; extra == 'tests' - - pytest-cov ; extra == 'tests' - - pytest-timeout ; extra == 'tests' - - pytest-xdist ; extra == 'tests' - - trove-classifiers>=2024.10.12 ; extra == 'tests' - - defusedxml ; extra == 'xmp' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/59/ef/f96536f1df42c668cbacb727a8c6da7afc9c05ece6d558927fb1722693e1/numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - name: numpy - version: 2.3.2 - sha256: 8145dd6d10df13c559d1e4314df29695613575183fa2e2d11fac4c208c8a1f73 - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl - name: pillow - version: 12.2.0 - sha256: 7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5 + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + - coverage ; extra == 'testing' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/56/7b/af3d0da15bed3a8665419bb3a630585756920f4ad67abfdfef26240ebcc0/docstring_to_markdown-0.17-py3-none-any.whl + name: docstring-to-markdown + version: '0.17' + sha256: fd7d5094aa83943bf5f9e1a13701866b7c452eac19765380dead666e36d3711c requires_dist: - - furo ; extra == 'docs' - - olefile ; extra == 'docs' - - sphinx>=8.2 ; extra == 'docs' - - sphinx-autobuild ; extra == 'docs' - - sphinx-copybutton ; extra == 'docs' - - sphinx-inline-tabs ; extra == 'docs' - - sphinxext-opengraph ; extra == 'docs' - - olefile ; extra == 'fpx' - - olefile ; extra == 'mic' - - arro3-compute ; extra == 'test-arrow' - - arro3-core ; extra == 'test-arrow' - - nanoarrow ; extra == 'test-arrow' - - pyarrow ; extra == 'test-arrow' - - check-manifest ; extra == 'tests' - - coverage>=7.4.2 ; extra == 'tests' - - defusedxml ; extra == 'tests' - - markdown2 ; extra == 'tests' - - olefile ; extra == 'tests' - - packaging ; extra == 'tests' - - pyroma>=5 ; extra == 'tests' - - pytest ; extra == 'tests' - - pytest-cov ; extra == 'tests' - - pytest-timeout ; extra == 'tests' - - pytest-xdist ; extra == 'tests' - - trove-classifiers>=2024.10.12 ; extra == 'tests' - - defusedxml ; extra == 'xmp' + - importlib-metadata>=3.6 + - typing-extensions>=4.6 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/58/29/4f1e13979a848de2a0fd385462354b58358b6e8b3d9661663e308f6e3d5d/mypy-2.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: mypy + version: 2.2.0 + sha256: b0179a3a0b833f724a65f22613607cf7ea941ab17ec34fa283f8d6dfe21d9fa9 + requires_dist: + - typing-extensions>=4.6.0 ; python_full_version < '3.15' + - typing-extensions>=4.14.0 ; python_full_version >= '3.15' + - mypy-extensions>=1.0.0 + - pathspec>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - librt>=0.12.0 ; platform_python_implementation != 'PyPy' + - ast-serialize>=0.6.0,<1.0.0 + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/5d/10/ffb85fa380bc9c9000dc35f40f44954dde49023018501c54faab94b3a39e/polars_runtime_32-1.42.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: polars-runtime-32 + version: 1.42.1 + sha256: d059e8e53cc114ff82f9bd791fd341dc53534a2c745e6f6aa37594c3a93f01fe requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/5d/95/6b5cb3461ea5673ba0995989746db58eb18b91b54dbf331e72f569540946/pip-26.1.2-py3-none-any.whl name: pip @@ -2969,6 +2907,23 @@ packages: requires_dist: - pytest ; extra == 'test' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/62/29/16ff6e4e91d71e530d3581f45e342a9cc35072ac6b31dcbc2fa33de2569e/polars_runtime_32-1.42.1-cp310-abi3-macosx_10_12_x86_64.whl + name: polars-runtime-32 + version: 1.42.1 + sha256: bbdc26d68ee5b23b0ce227fa0599220aa35b77c826b6b0a6b2d8e7f6c1c36974 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/62/7b/14687aa674250e5e546f616f486b0d56d3631cd5b2415739141ce40bdcea/numpy-2.5.1-cp312-cp312-macosx_10_13_x86_64.whl + name: numpy + version: 2.5.1 + sha256: 2c889b56fe48b1018f764b0eec8df59ab654e9148aa91faa12596043500de277 + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/62/f2/c9522a81c32132799a1972c39f5c5f8b4c8b9f00488a23feaa6c06f07741/cffi-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: cffi + version: 2.1.0 + sha256: 1e9f50d192a3e525b15a75ab5114e442d83d657b7ec29182a991bc9a88fd3a66 + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/63/4b/585adeb9167b08d3cdff0032a938b0e72655c92003df4f52c3f696a1bcc2/maturin-1.14.1-py3-none-win_amd64.whl name: maturin version: 1.14.1 @@ -2978,21 +2933,29 @@ packages: - patchelf ; extra == 'patchelf' - ziglang>=0.10.0 ; extra == 'zig' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/65/bb/402205166c567bb0b5452e2176dbf2af4b88d3577096f53fdc95be8ef562/pymoo-0.6.1.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/65/66/53f31807a48a750f9d748da273bc3fcedd12b27ff1f3e373bfec55ef2dc0/numpy-2.5.1-cp312-cp312-win_amd64.whl + name: numpy + version: 2.5.1 + sha256: f7d60026c0bdb1380e83bfa7a0419c4577ee4b9a08880afcb6dadeb74c649fa2 + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/67/6a/9087c3c4af28b93f6b840a3059a6404bb6c48dc45dafa51a0501d5e539f5/pymoo-0.6.2-cp312-cp312-macosx_11_0_arm64.whl name: pymoo - version: 0.6.1.6 - sha256: 533de86c284bf3b7b6da871e2ae07a914eaa5d3a51f5c4e6d7c055d3471c4467 + version: 0.6.2 + sha256: d9b8b59d2bd21c8a04fc014ce197c464375c3bbc90324477086ace056eb68caf requires_dist: - numpy>=1.19.3 - scipy>=1.1 - moocore>=0.1.7 - autograd>=1.4 - - cma>=3.2.2 + - cma>=3.4.0 - matplotlib>=3 - alive-progress - deprecated - numba ; extra == 'dev' - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pyclawd ; extra == 'dev' + - pytest-xvfb ; extra == 'dev' - nbformat ; extra == 'dev' - jupyter ; extra == 'dev' - pyrecorder ; extra == 'dev' @@ -3065,6 +3028,14 @@ packages: - ruff>=0.12.0 ; extra == 'dev' - cython-lint>=0.12.2 ; extra == 'dev' requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/6e/ce/8c98e6604bb1ec9d03c8493c328185b69bb7533fe08f3640f0f3641bd9d1/autograd-1.9.1-py3-none-any.whl + name: autograd + version: 1.9.1 + sha256: b788bae3fa010cbffb4cfb7b8ba2a3f0daa6072a8506da6164c779fe9cf3e05a + requires_dist: + - numpy<3 + - scipy ; extra == 'scipy' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl name: msgpack version: 1.1.0 @@ -3094,53 +3065,6 @@ packages: - twine>=4.0.2 ; extra == 'release' - pip-tools>=6.12.1 ; extra == 'release' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/76/fd/da7e96fca6a05f5a80b682aa75f301e2ce870836fc444973a2c717beb945/moocore-0.3.1-cp310-abi3-macosx_10_9_universal2.whl - name: moocore - version: 0.3.1 - sha256: cf22852e951e66cb1145858ff1e4fabcb2810dfc2c19d8df99bdc1a52b28c591 - requires_dist: - - cffi>=1.17.1 - - numpy>=1.24 - - platformdirs - - botorch ; extra == 'benchmarks' - - desdeo ; extra == 'benchmarks' - - fast-pareto ; extra == 'benchmarks' - - jmetalpy>=1.8 ; extra == 'benchmarks' - - matplotlib ; extra == 'benchmarks' - - moarchiving>=1.1 ; extra == 'benchmarks' - - nevergrad ; extra == 'benchmarks' - - numba ; extra == 'benchmarks' - - numpy ; extra == 'benchmarks' - - optuna ; extra == 'benchmarks' - - pandas>=2 ; extra == 'benchmarks' - - paretoset ; extra == 'benchmarks' - - patatune ; extra == 'benchmarks' - - py-cpuinfo ; extra == 'benchmarks' - - pymoo ; extra == 'benchmarks' - - coverage[toml] ; extra == 'coverage' - - gcovr ; extra == 'coverage' - - pre-commit>=3.3.2 ; extra == 'dev' - - ruff>=0.11.2 ; extra == 'dev' - - tox>=4.6.2 ; extra == 'dev' - - ipykernel ; extra == 'docs' - - ipywidgets ; extra == 'docs' - - jupyter ; extra == 'docs' - - jupyterlab ; extra == 'docs' - - kaleido ; extra == 'docs' - - pandas>=2 ; extra == 'docs' - - plotly ; extra == 'docs' - - pydata-sphinx-theme>=0.16 ; extra == 'docs' - - seaborn ; extra == 'docs' - - sphinx>=6 ; extra == 'docs' - - sphinx-autodoc-typehints ; extra == 'docs' - - sphinx-copybutton ; extra == 'docs' - - sphinx-design ; extra == 'docs' - - sphinx-gallery>=0.19 ; extra == 'docs' - - sphinxcontrib-bibtex ; extra == 'docs' - - sphinxcontrib-napoleon ; extra == 'docs' - - pandas>=2 ; extra == 'test' - - pytest>7 ; extra == 'test' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/77/1d/c84e30c0c674184948b66f076ab271c01d940618a2824c23cd035a27bc20/debugpy-1.8.21-cp312-cp312-win_amd64.whl name: debugpy version: 1.8.21 @@ -3180,28 +3104,46 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - name: cffi - version: 2.0.0 - sha256: 3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba - requires_dist: - - pycparser ; implementation_name != 'PyPy' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl name: mypy-extensions version: 1.1.0 sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/7a/24/8493538fa4f62f982686398a5b8f68008138a75086abdea19ade64bf4255/librt-0.11.0-cp312-cp312-macosx_11_0_arm64.whl - name: librt - version: 0.11.0 - sha256: 40071fc5fe0ce8daa6de616702314a01e1250711682b0523d6ab8d4525910cb3 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/7c/2f/244643a5ce54a94f0a9a2ab578189c061e4a87c002e037b0829dd77293b6/numpy-2.3.2-cp312-cp312-win_amd64.whl - name: numpy - version: 2.3.2 - sha256: 9e196ade2400c0c737d93465327d1ae7c06c7cb8a1756121ebf54b06ca183c7f - requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/7e/18/719e5558e5d7459396ce48c9ce97b34683523d75f2b871ca288ec0cc5c8c/pymoo-0.6.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: pymoo + version: 0.6.2 + sha256: 9fd4569f0c577bacb9cb48c6817b53044b00a6b2afe52021a18e21478ea6670a + requires_dist: + - numpy>=1.19.3 + - scipy>=1.1 + - moocore>=0.1.7 + - autograd>=1.4 + - cma>=3.4.0 + - matplotlib>=3 + - alive-progress + - deprecated + - numba ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pyclawd ; extra == 'dev' + - pytest-xvfb ; extra == 'dev' + - nbformat ; extra == 'dev' + - jupyter ; extra == 'dev' + - pyrecorder ; extra == 'dev' + - optproblems ; extra == 'dev' + - pandas ; extra == 'dev' + - ipython ; extra == 'dev' + - ipykernel ; extra == 'dev' + - joblib ; extra == 'parallelization' + - dask[distributed] ; extra == 'parallelization' + - ray[default] ; extra == 'parallelization' + - optuna ; extra == 'others' + - numba ; extra == 'full' + - scikit-learn ; extra == 'full' + - pandas ; extra == 'full' + - pymoo[parallelization] ; extra == 'full' + - pymoo[others] ; extra == 'full' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl name: psutil version: 7.2.2 @@ -3306,6 +3248,37 @@ packages: requires_dist: - wcwidth requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: pillow + version: 12.3.0 + sha256: 78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91 + requires_dist: + - furo ; extra == 'docs' + - olefile ; extra == 'docs' + - sphinx>=8.2 ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-inline-tabs ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - olefile ; extra == 'fpx' + - olefile ; extra == 'mic' + - arro3-compute ; extra == 'test-arrow' + - arro3-core ; extra == 'test-arrow' + - nanoarrow ; extra == 'test-arrow' + - pyarrow ; extra == 'test-arrow' + - coverage>=7.4.2 ; extra == 'tests' + - defusedxml ; extra == 'tests' + - markdown2 ; extra == 'tests' + - olefile ; extra == 'tests' + - packaging ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-timeout ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - setuptools ; extra == 'tests' + - trove-classifiers>=2024.10.12 ; extra == 'tests' + - defusedxml ; extra == 'xmp' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl name: deprecated version: 1.3.1 @@ -3324,11 +3297,6 @@ packages: version: 6.0.2 sha256: c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: ruff - version: 0.15.20 - sha256: 309809086c2acb67624950a3c8133e80f32d0d3e27106c0cd60ff26657c9f24b - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl name: fonttools version: 4.63.0 @@ -3381,17 +3349,17 @@ packages: version: 5.13.0 sha256: 7edf16359c52ed53406e216565d83e6b98c23c3cb9a0a01673f2493f8fb15edf requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/8b/d0/07c77e067f0838949b43bd89232c29d72efebb9d2801a9750184eb706b71/librt-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl - name: librt - version: 0.11.0 - sha256: b87504f1690a23b9a2cca841191a04f83895d4fc2dd04df91d82b1a04ca2ad46 - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl name: pure-eval version: 0.2.3 sha256: 1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 requires_dist: - pytest ; extra == 'tests' +- pypi: https://files.pythonhosted.org/packages/90/ef/db98f744ca50e6efc9c95c70ee49b77aefac31f6a3fc7c83754a42d6a74f/librt-0.13.0-cp312-cp312-macosx_11_0_arm64.whl + name: librt + version: 0.13.0 + sha256: 93d24ebb82aa4420b1409c389e7857bc35bd0b668007ac8172427d5c73cc8cc5 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/92/44/da239917f5711ca7105f7d7f9e2765716dd883b241529beafc0f28504725/pytoolconfig-1.3.1-py3-none-any.whl name: pytoolconfig version: 1.3.1 @@ -3435,6 +3403,11 @@ packages: - pyparsing>=3 - python-dateutil>=2.7 requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/94/f0/f2283385bb6b950b26a1410f4ce51ec27231e0b3a4b925c46366d218b198/librt-0.13.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: librt + version: 0.13.0 + sha256: b222493da6e7b6199db9bd79502436cf5a27da3c1f7fa83c7e285444fc93fd03 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/94/f2/21c90f2a16689702e2aaff45795b11018dff2c9b1242bac10d225483f676/wrapt-2.2.2-cp312-cp312-macosx_11_0_arm64.whl name: wrapt version: 2.2.2 @@ -3448,24 +3421,11 @@ packages: version: 1.8.21 sha256: b1e37d333663c8851516a47364ef473da127f9caebe4417e6df6f5825a7e9a92 requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/95/b1/55861beb5c339b44f9a2ba92df9e2cb1eeb4ae1eee674cdf7772c797778b/mypy-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl - name: mypy - version: 2.1.0 - sha256: 244358bf1c0da7722230bce60683d52e8e9fd030554926f15b747a84efb5b3af - requires_dist: - - typing-extensions>=4.6.0 ; python_full_version < '3.15' - - typing-extensions>=4.14.0 ; python_full_version >= '3.15' - - mypy-extensions>=1.0.0 - - pathspec>=1.0.0 - - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.11.0 ; platform_python_implementation != 'PyPy' - - ast-serialize>=0.3.0,<1.0.0 - - psutil>=4.0 ; extra == 'dmypy' - - setuptools>=50 ; extra == 'mypyc' - - lxml ; extra == 'reports' - - pip ; extra == 'install-types' - - orjson ; extra == 'faster-cache' - requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl + name: wcwidth + version: 0.8.2 + sha256: d63947694a0539a1d51e01eda7caf800c291020e6cdd7e28ad7b14dd33ad4f85 + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl name: scipy version: 1.18.0 @@ -3634,48 +3594,12 @@ packages: - xlsxwriter>=3.0.5 ; extra == 'all' - zstandard>=0.19.0 ; extra == 'all' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/99/ee/919661478e5891a3c96e549c036e467e64563ab85995b10c53c8358e16a3/mypy-2.1.0-cp312-cp312-win_amd64.whl - name: mypy - version: 2.1.0 - sha256: 6753d0c1fdd6b1a23b9e4f283ce80b2153b724adcb2653b20b85a8a28ac6436b - requires_dist: - - typing-extensions>=4.6.0 ; python_full_version < '3.15' - - typing-extensions>=4.14.0 ; python_full_version >= '3.15' - - mypy-extensions>=1.0.0 - - pathspec>=1.0.0 - - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.11.0 ; platform_python_implementation != 'PyPy' - - ast-serialize>=0.3.0,<1.0.0 - - psutil>=4.0 ; extra == 'dmypy' - - setuptools>=50 ; extra == 'mypyc' - - lxml ; extra == 'reports' - - pip ; extra == 'install-types' - - orjson ; extra == 'faster-cache' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl name: pexpect version: 4.9.0 sha256: 7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 requires_dist: - ptyprocess>=0.5 -- pypi: https://files.pythonhosted.org/packages/a0/32/615eb5911859e43d054941b0d0a7d06cfa2870eba86529cf385b052b111c/mypy-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: mypy - version: 2.1.0 - sha256: bf03e12003084a67395184d3eb8cbd6a489dc3655b5664b28c210a9e2403ab0b - requires_dist: - - typing-extensions>=4.6.0 ; python_full_version < '3.15' - - typing-extensions>=4.14.0 ; python_full_version >= '3.15' - - mypy-extensions>=1.0.0 - - pathspec>=1.0.0 - - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.11.0 ; platform_python_implementation != 'PyPy' - - ast-serialize>=0.3.0,<1.0.0 - - psutil>=4.0 ; extra == 'dmypy' - - setuptools>=50 ; extra == 'mypyc' - - lxml ; extra == 'reports' - - pip ; extra == 'install-types' - - orjson ; extra == 'faster-cache' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl name: nest-asyncio version: 1.6.0 @@ -3706,20 +3630,69 @@ packages: - setuptools ; extra == 'dev' - xmlschema ; extra == 'dev' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a8/eb/f636456ff21a83fc13c032b58cc5dde061691546ac79efa284b2989b7982/cffi-2.1.0-cp312-cp312-win_amd64.whl + name: cffi + version: 2.1.0 + sha256: c97f080ea627e2863524c5af3836e2270b5f5dfff1f104392b959f8df0c5d384 + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl name: kiwisolver version: 1.5.0 sha256: f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384 requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/b0/da/5d1876984b3746c85dbd219dbfcb73c85f54ee263fd32e5b2a632ec14571/librt-0.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: librt - version: 0.11.0 - sha256: d5b0eea49f5562861ee8d757a32ef7d559c1d35be2aaaa1ec28941d74c9ffc8a - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b2/71/4d1d479aa56d0101c40e17720c3d6ac2af7269ea0487a80b18e7bfd1a5b7/ast_serialize-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: ast-serialize - version: 0.5.0 - sha256: b54f60c1d78767a53b67eaa663f0dfac3afe606aa07f1301572f588b73d64809 +- pypi: https://files.pythonhosted.org/packages/af/7d/f62b2dd8f944dc47e8693d58778020c89713e3407e1aedf7099365297395/moocore-0.3.2-cp310-abi3-macosx_10_9_universal2.whl + name: moocore + version: 0.3.2 + sha256: 19b10372a867e35e34f7816d49909182a2b2290d98289521d3584d5770d05a29 + requires_dist: + - cffi>=1.17.1 + - numpy>=1.24 + - platformdirs + - botorch ; extra == 'benchmarks' + - desdeo ; extra == 'benchmarks' + - fast-pareto ; extra == 'benchmarks' + - jmetalpy>=1.8 ; extra == 'benchmarks' + - matplotlib ; extra == 'benchmarks' + - moarchiving>=1.1 ; extra == 'benchmarks' + - nevergrad ; extra == 'benchmarks' + - numba ; extra == 'benchmarks' + - numpy ; extra == 'benchmarks' + - optuna ; extra == 'benchmarks' + - pandas>=2 ; extra == 'benchmarks' + - paretoset ; extra == 'benchmarks' + - patatune ; extra == 'benchmarks' + - py-cpuinfo ; extra == 'benchmarks' + - pymoo ; extra == 'benchmarks' + - coverage[toml] ; extra == 'coverage' + - gcovr ; extra == 'coverage' + - pre-commit>=3.3.2 ; extra == 'dev' + - ruff>=0.11.2 ; extra == 'dev' + - tox>=4.6.2 ; extra == 'dev' + - ipykernel ; extra == 'docs' + - ipywidgets ; extra == 'docs' + - jupyter ; extra == 'docs' + - jupyterlab ; extra == 'docs' + - kaleido ; extra == 'docs' + - pandas>=2 ; extra == 'docs' + - plotly ; extra == 'docs' + - pydata-sphinx-theme>=0.16 ; extra == 'docs' + - seaborn ; extra == 'docs' + - sphinx>=6 ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-design ; extra == 'docs' + - sphinx-gallery>=0.19 ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinxcontrib-napoleon ; extra == 'docs' + - pandas>=2 ; extra == 'test' + - pytest>7 ; extra == 'test' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b2/97/f63084cf55444fc110e8cb985ebfcc592af47f597d44453d778cb81bc156/ruff-0.15.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: ruff + version: 0.15.21 + sha256: bab0905d2f29e0d9fbc3c373ed23db0095edaa3f71f1f4f519ec15134d9e85c8 requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/b3/33/dafc5808c2af43672912111d7c3354af1615f7e2be3bed7a878461abbe4d/black-26.5.1-cp312-cp312-win_amd64.whl name: black @@ -3859,31 +3832,21 @@ packages: version: 1.17.0 sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/b8/a9/6e73d68500f80773f65f0654ea932019d6694329a0eb0ed0533de38df376/numpy-2.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: numpy + version: 2.5.1 + sha256: 59fda5e192b570217ec2580c96f00e9a7e12ef6866a900eb089b62c1a32545ca + requires_python: '>=3.12' - pypi: https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: pyyaml version: 6.0.2 sha256: 80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/bc/96/e7b533ea5740641dd62b07a790af5d9d8fec36000b8e2d0472bd7574105f/numpy-2.3.2-cp312-cp312-macosx_11_0_arm64.whl - name: numpy - version: 2.3.2 - sha256: 2f4f0215edb189048a3c03bd5b19345bdfa7b45a7a6f72ae5945d2a28272727f - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/bc/c4/9a34ade542426f56a0bc042f774073d1c247ae7575363c27587788cb2b2f/ujson-5.13.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: ujson version: 5.13.0 sha256: ea7204e9fa7538bfbb1396e1ee8c2bbcd3818b3633ef5bb14d4fdea52994d14d requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/bd/54/0b8355ab29669560608b2864a5e54674dd78bbd48c04976607516e081107/polars_runtime_32-1.42.0-cp310-abi3-win_amd64.whl - name: polars-runtime-32 - version: 1.42.0 - sha256: 91a07bd852c1d1ea19b3e27c974bc7b1b29ac948fdb2e785da3a6ec0f0683cad - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl - name: wcwidth - version: 0.8.1 - sha256: f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8 - requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl name: contourpy version: 1.3.3 @@ -3909,6 +3872,43 @@ packages: - pytest-xdist ; extra == 'test-no-images' - wurlitzer ; extra == 'test-no-images' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/be/6a/edd939cc6fa04b6415aaa9bf19720fc74ead81234b3d38542e0005816d4d/polars-1.42.1-py3-none-any.whl + name: polars + version: 1.42.1 + sha256: 3c0c65cdfa21a621650c4bdcbbccf93964d052fd766c3e70e84a55d961c259fd + requires_dist: + - polars-runtime-32==1.42.1 + - polars-runtime-64==1.42.1 ; extra == 'rt64' + - polars-runtime-compat==1.42.1 ; extra == 'rtcompat' + - polars-cloud>=0.4.0 ; extra == 'polars-cloud' + - numpy>=1.16.0 ; extra == 'numpy' + - pandas ; extra == 'pandas' + - polars[pyarrow] ; extra == 'pandas' + - pyarrow>=7.0.0 ; extra == 'pyarrow' + - pydantic ; extra == 'pydantic' + - fastexcel>=0.9 ; extra == 'calamine' + - openpyxl>=3.0.0 ; extra == 'openpyxl' + - xlsx2csv>=0.8.0 ; extra == 'xlsx2csv' + - xlsxwriter ; extra == 'xlsxwriter' + - polars[calamine,openpyxl,xlsx2csv,xlsxwriter] ; extra == 'excel' + - adbc-driver-manager[dbapi] ; extra == 'adbc' + - adbc-driver-sqlite[dbapi] ; extra == 'adbc' + - connectorx>=0.3.2 ; extra == 'connectorx' + - sqlalchemy ; extra == 'sqlalchemy' + - polars[pandas] ; extra == 'sqlalchemy' + - polars[adbc,connectorx,sqlalchemy] ; extra == 'database' + - fsspec ; extra == 'fsspec' + - deltalake>=1.0.0,!=1.5.* ; extra == 'deltalake' + - pyiceberg>=0.7.1 ; extra == 'iceberg' + - gevent ; extra == 'async' + - cloudpickle ; extra == 'cloudpickle' + - matplotlib ; extra == 'graph' + - altair>=5.4.0 ; extra == 'plot' + - great-tables>=0.8.0 ; extra == 'style' + - tzdata ; sys_platform == 'win32' and extra == 'timezone' + - cudf-polars-cu12 ; extra == 'gpu' + - polars[async,cloudpickle,database,deltalake,excel,fsspec,graph,iceberg,numpy,pandas,plot,pyarrow,pydantic,style,timezone] ; extra == 'all' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/bf/3c/2d5297d82286f6f3d92770289fd439956b201c0a4fc7e72efb9b2293758e/pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: pytokens version: 0.4.1 @@ -3969,6 +3969,11 @@ packages: - docopt ; extra == 'testing' - pytest<9.0.0 ; extra == 'testing' requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/c0/b8/e43466b2a6067ce91e669068f6e28d6c719a920f014b070d5c8731725de3/ruff-0.15.21-py3-none-win_amd64.whl + name: ruff + version: 0.15.21 + sha256: d4b8d9a2f0f12b816b50447f6eccb9f4bb01a6b82c86b50fb3b5354b458dc6d3 + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl name: executing version: 2.2.1 @@ -3982,24 +3987,39 @@ packages: - littleutils ; extra == 'tests' - rich ; python_full_version >= '3.11' and extra == 'tests' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/c1/f6/ec7ec652c51db77c2f61d8573338e13e4704303265ccc658cb4031d9f354/ast_serialize-0.6.0-cp39-abi3-macosx_11_0_arm64.whl + name: ast-serialize + version: 0.6.0 + sha256: e61580a69faf47e3689795367ed211f2a10fd741478cc0f36a0f128793360aad + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: kiwisolver version: 1.5.0 sha256: bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/c5/44/7c90db15bca022fe21af37bdb69c6606bc51bc1d9c4fc4bfbdd169c6a81e/autograd-1.9.0-py3-none-any.whl - name: autograd - version: 1.9.0 - sha256: bb1e5827cd175115b954e9e8fe3e59d57ff96c713b02e0ec5f38c682d74287ab - requires_dist: - - numpy<3 - - scipy ; extra == 'scipy' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/c5/50/3b334f887accfa811cf5c7533b8ce22c523eb009363a86401198899dadd2/cachebox-5.2.3-cp312-cp312-win_amd64.whl name: cachebox version: 5.2.3 sha256: cfd69114141ab362acaa2099e425a1b965cf7b021a539a4e953143d593930b74 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/c5/8f/f79a7c5a76671b0f563d4beaa7d99fe90df4500d2c1d2ba1be0432121bcf/mypy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl + name: mypy + version: 2.2.0 + sha256: fb0a020dc68480d40e484675558ed637140df1ccbf896a81ba68bca85f2b50a0 + requires_dist: + - typing-extensions>=4.6.0 ; python_full_version < '3.15' + - typing-extensions>=4.14.0 ; python_full_version >= '3.15' + - mypy-extensions>=1.0.0 + - pathspec>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - librt>=0.12.0 ; platform_python_implementation != 'PyPy' + - ast-serialize>=0.6.0,<1.0.0 + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl name: pytokens version: 0.4.1 @@ -4015,11 +4035,6 @@ packages: - twine ; extra == 'dev' - wheel ; extra == 'dev' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl - name: ruff - version: 0.15.20 - sha256: 9ebd1fd9b9c95fc0bd7b2761aebec1f030013d2e193a2901b224af68fe47251b - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/c7/26/4a2bad8eb430d8d805a4642c4bff25103a37548d74ab346f8b1e024abcc5/deepdiff-9.1.0-py3-none-any.whl name: deepdiff version: 9.1.0 @@ -4059,11 +4074,21 @@ packages: - pytest-cov~=7.1.0 ; extra == 'test' - python-dotenv~=1.2.2 ; extra == 'test' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c9/7b/2da9c74c1ed25a89cc4e1c8e007ea2eb4a0f1fafa3e70d757fe3242c5c5c/librt-0.13.0-cp312-cp312-win_amd64.whl + name: librt + version: 0.13.0 + sha256: e54a315caf843c8d77e388cadc56ea9ded569935ee2d2347d7ea94992e5aa6fa + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/c9/a4/b393076ffb21b469eec5b328a0534cf03a3b90bfc6b1f09507cdd075d938/tornado-6.5.7-cp39-abi3-win_amd64.whl name: tornado version: 6.5.7 sha256: de942f843533a039ef9fa3d9c88c7cd8a7c94553fb5ad0154270989b3d99a2c4 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ca/87/b4d6c38e0ccd5e85dc54cecdf933a152c60b28fe5d993a6d8a72fa6d5896/ast_serialize-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: ast-serialize + version: 0.6.0 + sha256: dcbed41e9386059fc0261d602445ede0976c2ecec2939688bcbcb9ed0b6f28b7 + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl name: iniconfig version: 2.3.0 @@ -4107,32 +4132,34 @@ packages: - pytest-xdist ; extra == 'test-no-images' - wurlitzer ; extra == 'test-no-images' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl - name: tzdata - version: '2026.2' - sha256: bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7 - requires_python: '>=2' -- pypi: https://files.pythonhosted.org/packages/cf/72/06d3d78b7e8e8d3c72ea9eee310950334d50986462b3c1d40f82972495a5/polars_runtime_32-1.42.0-cp310-abi3-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/d1/0e/51db89361668fe077a835fc579277f824ba526e7daf7b94d23d25439e0d0/polars_runtime_32-1.42.1-cp310-abi3-win_amd64.whl name: polars-runtime-32 - version: 1.42.0 - sha256: e7923db3bcb57e0edecde3be28629e0411414a15ef1a4c10c783ac5eadab2e1e + version: 1.42.1 + sha256: e9364c26da389a8b7339e4d29e20a3d12af730247e6ed3b7804bddce2477f428 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/d1/be/fbaba7b0ee89874fb11668416dec9e5585c190b676b0796cff26a9290fe8/mypy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl + name: mypy + version: 2.2.0 + sha256: 484a2be712b245ac6e89847141f1f50c612b0a924aa25917e63e6cfcf4da07cd + requires_dist: + - typing-extensions>=4.6.0 ; python_full_version < '3.15' + - typing-extensions>=4.14.0 ; python_full_version >= '3.15' + - mypy-extensions>=1.0.0 + - pathspec>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - librt>=0.12.0 ; platform_python_implementation != 'PyPy' + - ast-serialize>=0.6.0,<1.0.0 + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl name: colorama version: 0.4.6 sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' -- pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl - name: asttokens - version: 3.0.1 - sha256: 15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a - requires_dist: - - astroid>=2,<5 ; extra == 'astroid' - - astroid>=2,<5 ; extra == 'test' - - pytest<9.0 ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: pandas version: 2.3.2 @@ -4224,6 +4251,17 @@ packages: - xlsxwriter>=3.0.5 ; extra == 'all' - zstandard>=0.19.0 ; extra == 'all' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl + name: asttokens + version: 3.0.2 + sha256: 9da13157f5b28becde0bd374fc677dcd3c290614264eff096f167c469cd9f933 + requires_dist: + - astroid>=2,<5 ; extra == 'astroid' + - astroid>=2,<5 ; extra == 'test' + - pytest<9.0 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/d4/d4/ec46cedab6a6145e21768baa8110db3e2e836a320d8499e4ef18bc894e61/cma-4.4.4-py3-none-any.whl name: cma version: 4.4.4 @@ -4233,10 +4271,28 @@ packages: - matplotlib ; extra == 'plotting' - moarchiving ; extra == 'constrained-solution-tracking' - scipy ; extra == 'statistical-tests' -- pypi: https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/d7/1b/05b212bef4d2234b5f0b551ea53ce0680d8075b2e79861c765f70b590945/mypy-2.2.0-cp312-cp312-win_amd64.whl + name: mypy + version: 2.2.0 + sha256: 511320b17467402e2906130e185abffffa3d7648aff1444fc2abb61f4c8a087d + requires_dist: + - typing-extensions>=4.6.0 ; python_full_version < '3.15' + - typing-extensions>=4.14.0 ; python_full_version >= '3.15' + - mypy-extensions>=1.0.0 + - pathspec>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - librt>=0.12.0 ; platform_python_implementation != 'PyPy' + - ast-serialize>=0.6.0,<1.0.0 + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl name: pillow - version: 12.2.0 - sha256: f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421 + version: 12.3.0 + sha256: ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7 requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' @@ -4251,17 +4307,16 @@ packages: - arro3-core ; extra == 'test-arrow' - nanoarrow ; extra == 'test-arrow' - pyarrow ; extra == 'test-arrow' - - check-manifest ; extra == 'tests' - coverage>=7.4.2 ; extra == 'tests' - defusedxml ; extra == 'tests' - markdown2 ; extra == 'tests' - olefile ; extra == 'tests' - packaging ; extra == 'tests' - - pyroma>=5 ; extra == 'tests' - pytest ; extra == 'tests' - pytest-cov ; extra == 'tests' - pytest-timeout ; extra == 'tests' - pytest-xdist ; extra == 'tests' + - setuptools ; extra == 'tests' - trove-classifiers>=2024.10.12 ; extra == 'tests' - defusedxml ; extra == 'xmp' requires_python: '>=3.10' @@ -4341,23 +4396,16 @@ packages: - ruff>=0.12.0 ; extra == 'dev' - cython-lint>=0.12.2 ; extra == 'dev' requires_python: '>=3.12' -- pypi: https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl - name: cffi - version: 2.0.0 - sha256: 8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c - requires_dist: - - pycparser ; implementation_name != 'PyPy' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl name: packaging version: '26.2' sha256: 5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/e0/9e/dc2530acb3a60dc6e46d65abf27d1d9f86721694757906a148d90a6860de/ast_serialize-0.5.0-cp39-abi3-macosx_10_12_x86_64.whl - name: ast-serialize - version: 0.5.0 - sha256: 0668aa9459cfa8c9c49ddd2163ebcf43088ba045ef7492af6fe22e0098303101 - requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/e1/19/cc5bb2a3f2913d27d6dbb2c78d25921fabaedc6741d4a5a615a11f3c5bf3/numpy-2.5.1-cp312-cp312-macosx_11_0_arm64.whl + name: numpy + version: 2.5.1 + sha256: ab451b59c5643c570974c43aef780703ef1d3b4965d2be07afd530615a9358d1 + requires_python: '>=3.12' - pypi: https://files.pythonhosted.org/packages/e4/e7/6fa6abfc9c4c07b88f09a88466fa93c7081fd679d8e06f8f558bb4ac845c/cachebox-5.2.3-cp312-cp312-macosx_10_12_x86_64.whl name: cachebox version: 5.2.3 @@ -4378,6 +4426,11 @@ packages: - pyparsing>=3 - python-dateutil>=2.7 requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl + name: tzdata + version: '2026.3' + sha256: dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931 + requires_python: '>=2' - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl name: cycler version: 0.12.1 @@ -4454,13 +4507,6 @@ packages: - pytest-timeout ; extra == 'test' - pytest<9 ; extra == 'test' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl - name: cffi - version: 2.0.0 - sha256: 6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d - requires_dist: - - pycparser ; implementation_name != 'PyPy' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl name: python-dateutil version: 2.9.0.post0 @@ -4568,6 +4614,11 @@ packages: version: 5.13.0 sha256: bf81570ac056cb058f9117b52ca5dd800bfe9381d0076d0bb30a08a54591d654 requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f0/f4/b2933ddae222dac338476abb872641169a5cfed2c2bb5444a5b07b32b0c3/librt-0.13.0-cp312-cp312-macosx_10_13_x86_64.whl + name: librt + version: 0.13.0 + sha256: 30536798f4504c0fad0885b1d371b0539abb081e4570c9d7c641cb51141b49f0 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: msgpack version: 1.1.0 @@ -4595,6 +4646,28 @@ packages: - typing-extensions>=4 ; extra == 'optional' - google-re2>=1.1 ; extra == 're2' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl + name: narwhals + version: 2.23.0 + sha256: 769e7b9ab102c93d8fa019f6b4cd1a657909b04a20bf6210e5a35aae06814ae9 + requires_dist: + - cudf-cu12>=24.10.0 ; sys_platform == 'linux' and extra == 'cudf' + - dask[dataframe]>=2024.8 ; extra == 'dask' + - duckdb>=1.1 ; extra == 'duckdb' + - ibis-framework>=6.0.0 ; extra == 'ibis' + - rich>=12.4.4 ; extra == 'ibis' + - packaging>=21.3 ; extra == 'ibis' + - pyarrow-hotfix>=0.7 ; extra == 'ibis' + - modin>=0.22.0 ; extra == 'modin' + - pandas>=1.3.4 ; extra == 'pandas' + - polars>=0.20.4 ; extra == 'polars' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - pyspark>=3.5.0 ; extra == 'pyspark' + - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' + - narwhals[duckdb] ; extra == 'sql' + - sqlparse>=0.5.5 ; extra == 'sql' + - sqlframe>=3.22.0,!=3.39.3 ; extra == 'sqlframe' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl name: pygments version: 2.20.0 @@ -4602,6 +4675,11 @@ packages: requires_dist: - colorama>=0.4.6 ; extra == 'windows-terminal' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f5/de/3b107712e642f063c7a9e0887c427b22cb44097de5aab36c05f2e280670c/ruff-0.15.21-py3-none-macosx_11_0_arm64.whl + name: ruff + version: 0.15.21 + sha256: e6312e41bc96791299614995ea3a977c5857c3b5662b1ecef6755b02b87cb646 + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/f6/d8/502954a4ec0efcf264f99b65b41c3c54e65a647d9f0d6f62cd02227d242c/ipykernel-6.31.0-py3-none-any.whl name: ipykernel version: 6.31.0 @@ -4649,95 +4727,6 @@ packages: requires_dist: - cffi ; implementation_name == 'pypy' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl - name: cffi - version: 2.0.0 - sha256: da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 - requires_dist: - - pycparser ; implementation_name != 'PyPy' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/f9/14/abe5ce876ab5b66ee3c691bf537fcd43d037aea55d447aacf74630a8f31e/plotly-6.8.0-py3-none-any.whl - name: plotly - version: 6.8.0 - sha256: 13c5c4a0f70b74cab1913eda0de49b826df5931708eb6f9c3010040614700ec8 - requires_dist: - - narwhals>=1.15.1 - - packaging - - anywidget ; extra == 'dev' - - build ; extra == 'dev' - - colorcet ; extra == 'dev' - - fiona<=1.9.6 ; python_full_version < '3.9' and extra == 'dev' - - geopandas ; extra == 'dev' - - inflect ; extra == 'dev' - - jupyterlab ; extra == 'dev' - - kaleido>=1.3.0 ; extra == 'dev' - - numpy>=1.22 ; extra == 'dev' - - orjson ; extra == 'dev' - - pandas ; extra == 'dev' - - pdfrw ; extra == 'dev' - - pillow ; extra == 'dev' - - plotly-geo ; extra == 'dev' - - polars[timezone] ; extra == 'dev' - - pyarrow ; extra == 'dev' - - pyshp ; extra == 'dev' - - pytest ; extra == 'dev' - - pytz ; extra == 'dev' - - requests ; extra == 'dev' - - ruff==0.11.12 ; extra == 'dev' - - scikit-image ; extra == 'dev' - - scipy ; extra == 'dev' - - shapely ; extra == 'dev' - - statsmodels ; extra == 'dev' - - vaex ; python_full_version < '3.10' and extra == 'dev' - - xarray ; extra == 'dev' - - build ; extra == 'dev-build' - - jupyterlab ; extra == 'dev-build' - - pytest ; extra == 'dev-build' - - requests ; extra == 'dev-build' - - ruff==0.11.12 ; extra == 'dev-build' - - pytest ; extra == 'dev-core' - - requests ; extra == 'dev-core' - - ruff==0.11.12 ; extra == 'dev-core' - - anywidget ; extra == 'dev-optional' - - build ; extra == 'dev-optional' - - colorcet ; extra == 'dev-optional' - - fiona<=1.9.6 ; python_full_version < '3.9' and extra == 'dev-optional' - - geopandas ; extra == 'dev-optional' - - inflect ; extra == 'dev-optional' - - jupyterlab ; extra == 'dev-optional' - - kaleido>=1.3.0 ; extra == 'dev-optional' - - numpy>=1.22 ; extra == 'dev-optional' - - orjson ; extra == 'dev-optional' - - pandas ; extra == 'dev-optional' - - pdfrw ; extra == 'dev-optional' - - pillow ; extra == 'dev-optional' - - plotly-geo ; extra == 'dev-optional' - - polars[timezone] ; extra == 'dev-optional' - - pyarrow ; extra == 'dev-optional' - - pyshp ; extra == 'dev-optional' - - pytest ; extra == 'dev-optional' - - pytz ; extra == 'dev-optional' - - requests ; extra == 'dev-optional' - - ruff==0.11.12 ; extra == 'dev-optional' - - scikit-image ; extra == 'dev-optional' - - scipy ; extra == 'dev-optional' - - shapely ; extra == 'dev-optional' - - statsmodels ; extra == 'dev-optional' - - vaex ; python_full_version < '3.10' and extra == 'dev-optional' - - xarray ; extra == 'dev-optional' - - numpy>=1,<2 ; extra == 'dev-pandas1' - - pandas>=1,<2 ; extra == 'dev-pandas1' - - setuptools<82 ; extra == 'dev-pandas1' - - pandas>=2,<3 ; extra == 'dev-pandas2' - - pandas>=3 ; python_full_version >= '3.11' and extra == 'dev-pandas3' - - numpy>=1.22 ; extra == 'express' - - kaleido>=1.3.0 ; extra == 'kaleido' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl - name: ruff - version: 0.15.20 - sha256: a525c81c70fb0380344dd1d8745d8cc1c890b7fc94a58d5a07bd8eb9557b8415 - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/fb/cd/7ee00d6aa023b1d0551da0da5fee3bc23c3eeea632fbfc5126d1fec52b7e/about_time-4.2.1-py3-none-any.whl name: about-time version: 4.2.1