lab_5 #5
108
lab_4/lab4.ipynb
108
lab_4/lab4.ipynb
@ -331,34 +331,6 @@
|
|||||||
" frac_test=0.25,\n",
|
" frac_test=0.25,\n",
|
||||||
" random_state=None,\n",
|
" random_state=None,\n",
|
||||||
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:\n",
|
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:\n",
|
||||||
" \"\"\"\n",
|
|
||||||
" Splits a Pandas dataframe into three subsets (train, val, and test)\n",
|
|
||||||
" following fractional ratios provided by the user, where each subset is\n",
|
|
||||||
" stratified by the values in a specific column (that is, each subset has\n",
|
|
||||||
" the same relative frequency of the values in the column). It performs this\n",
|
|
||||||
" splitting by running train_test_split() twice.\n",
|
|
||||||
"\n",
|
|
||||||
" Parameters\n",
|
|
||||||
" ----------\n",
|
|
||||||
" df_input : Pandas dataframe\n",
|
|
||||||
" Input dataframe to be split.\n",
|
|
||||||
" stratify_colname : str\n",
|
|
||||||
" The name of the column that will be used for stratification. Usually\n",
|
|
||||||
" this column would be for the label.\n",
|
|
||||||
" frac_train : float\n",
|
|
||||||
" frac_val : float\n",
|
|
||||||
" frac_test : float\n",
|
|
||||||
" The ratios with which the dataframe will be split into train, val, and\n",
|
|
||||||
" test data. The values should be expressed as float fractions and should\n",
|
|
||||||
" sum to 1.0.\n",
|
|
||||||
" random_state : int, None, or RandomStateInstance\n",
|
|
||||||
" Value to be passed to train_test_split().\n",
|
|
||||||
"\n",
|
|
||||||
" Returns\n",
|
|
||||||
" -------\n",
|
|
||||||
" df_train, df_val, df_test :\n",
|
|
||||||
" Dataframes containing the three splits.\n",
|
|
||||||
" \"\"\"\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" if frac_train + frac_val + frac_test != 1.0:\n",
|
" if frac_train + frac_val + frac_test != 1.0:\n",
|
||||||
" raise ValueError(\n",
|
" raise ValueError(\n",
|
||||||
@ -1688,16 +1660,53 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 8,
|
"execution_count": 22,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Model: knn\n",
|
"Model: knn\n"
|
||||||
"Model: random_forest\n",
|
]
|
||||||
"Model: mlp\n"
|
},
|
||||||
|
{
|
||||||
|
"ename": "ValueError",
|
||||||
|
"evalue": "A given column is not a column of the dataframe",
|
||||||
|
"output_type": "error",
|
||||||
|
"traceback": [
|
||||||
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
|
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3805\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n",
|
||||||
|
"File \u001b[1;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
|
||||||
|
"File \u001b[1;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
|
||||||
|
"File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7081\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
|
||||||
|
"File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7089\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
|
||||||
|
"\u001b[1;31mKeyError\u001b[0m: 'avg_glucose_level'",
|
||||||
|
"\nThe above exception was the direct cause of the following exception:\n",
|
||||||
|
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\utils\\_indexing.py:361\u001b[0m, in \u001b[0;36m_get_column_indices\u001b[1;34m(X, key)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m col \u001b[38;5;129;01min\u001b[39;00m columns:\n\u001b[1;32m--> 361\u001b[0m col_idx \u001b[38;5;241m=\u001b[39m \u001b[43mall_columns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcol\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 362\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(col_idx, numbers\u001b[38;5;241m.\u001b[39mIntegral):\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 3811\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[1;32m-> 3812\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m 3814\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[0;32m 3815\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[0;32m 3816\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n",
|
||||||
|
"\u001b[1;31mKeyError\u001b[0m: 'avg_glucose_level'",
|
||||||
|
"\nThe above exception was the direct cause of the following exception:\n",
|
||||||
|
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"Cell \u001b[1;32mIn[22], line 8\u001b[0m\n\u001b[0;32m 5\u001b[0m model \u001b[38;5;241m=\u001b[39m class_models[model_name][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 7\u001b[0m model_pipeline \u001b[38;5;241m=\u001b[39m Pipeline([(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpipeline\u001b[39m\u001b[38;5;124m\"\u001b[39m, pipeline_end), (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel\u001b[39m\u001b[38;5;124m\"\u001b[39m, model)])\n\u001b[1;32m----> 8\u001b[0m model_pipeline \u001b[38;5;241m=\u001b[39m \u001b[43mmodel_pipeline\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_train\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mravel\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 10\u001b[0m y_train_predict \u001b[38;5;241m=\u001b[39m model_pipeline\u001b[38;5;241m.\u001b[39mpredict(X_train)\n\u001b[0;32m 11\u001b[0m y_test_probs \u001b[38;5;241m=\u001b[39m model_pipeline\u001b[38;5;241m.\u001b[39mpredict_proba(X_test)[:, \u001b[38;5;241m1\u001b[39m]\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\base.py:1473\u001b[0m, in \u001b[0;36m_fit_context.<locals>.decorator.<locals>.wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1466\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1468\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1469\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1470\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1471\u001b[0m )\n\u001b[0;32m 1472\u001b[0m ):\n\u001b[1;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\pipeline.py:469\u001b[0m, in \u001b[0;36mPipeline.fit\u001b[1;34m(self, X, y, **params)\u001b[0m\n\u001b[0;32m 426\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Fit the model.\u001b[39;00m\n\u001b[0;32m 427\u001b[0m \n\u001b[0;32m 428\u001b[0m \u001b[38;5;124;03mFit all the transformers one after the other and sequentially transform the\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 466\u001b[0m \u001b[38;5;124;03m Pipeline with fitted steps.\u001b[39;00m\n\u001b[0;32m 467\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 468\u001b[0m routed_params \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_method_params(method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit\u001b[39m\u001b[38;5;124m\"\u001b[39m, props\u001b[38;5;241m=\u001b[39mparams)\n\u001b[1;32m--> 469\u001b[0m Xt \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrouted_params\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 470\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPipeline\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_log_message(\u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)):\n\u001b[0;32m 471\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_final_estimator \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpassthrough\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\pipeline.py:406\u001b[0m, in \u001b[0;36mPipeline._fit\u001b[1;34m(self, X, y, routed_params)\u001b[0m\n\u001b[0;32m 404\u001b[0m cloned_transformer \u001b[38;5;241m=\u001b[39m clone(transformer)\n\u001b[0;32m 405\u001b[0m \u001b[38;5;66;03m# Fit or load from cache the current transformer\u001b[39;00m\n\u001b[1;32m--> 406\u001b[0m X, fitted_transformer \u001b[38;5;241m=\u001b[39m \u001b[43mfit_transform_one_cached\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 407\u001b[0m \u001b[43m \u001b[49m\u001b[43mcloned_transformer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 408\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 409\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 410\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 411\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage_clsname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPipeline\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 412\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_log_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstep_idx\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 413\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrouted_params\u001b[49m\u001b[43m[\u001b[49m\u001b[43mname\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 414\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 415\u001b[0m \u001b[38;5;66;03m# Replace the transformer of the step with the fitted\u001b[39;00m\n\u001b[0;32m 416\u001b[0m \u001b[38;5;66;03m# transformer. This is necessary when loading the transformer\u001b[39;00m\n\u001b[0;32m 417\u001b[0m \u001b[38;5;66;03m# from the cache.\u001b[39;00m\n\u001b[0;32m 418\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps[step_idx] \u001b[38;5;241m=\u001b[39m (name, fitted_transformer)\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\joblib\\memory.py:312\u001b[0m, in \u001b[0;36mNotMemorizedFunc.__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 311\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 312\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\pipeline.py:1310\u001b[0m, in \u001b[0;36m_fit_transform_one\u001b[1;34m(transformer, X, y, weight, message_clsname, message, params)\u001b[0m\n\u001b[0;32m 1308\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(message_clsname, message):\n\u001b[0;32m 1309\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(transformer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit_transform\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m-> 1310\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[43mtransformer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfit_transform\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1311\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1312\u001b[0m res \u001b[38;5;241m=\u001b[39m transformer\u001b[38;5;241m.\u001b[39mfit(X, y, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit\u001b[39m\u001b[38;5;124m\"\u001b[39m, {}))\u001b[38;5;241m.\u001b[39mtransform(\n\u001b[0;32m 1313\u001b[0m X, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtransform\u001b[39m\u001b[38;5;124m\"\u001b[39m, {})\n\u001b[0;32m 1314\u001b[0m )\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\base.py:1473\u001b[0m, in \u001b[0;36m_fit_context.<locals>.decorator.<locals>.wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1466\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1468\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1469\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1470\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1471\u001b[0m )\n\u001b[0;32m 1472\u001b[0m ):\n\u001b[1;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\pipeline.py:533\u001b[0m, in \u001b[0;36mPipeline.fit_transform\u001b[1;34m(self, X, y, **params)\u001b[0m\n\u001b[0;32m 490\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Fit the model and transform with the final estimator.\u001b[39;00m\n\u001b[0;32m 491\u001b[0m \n\u001b[0;32m 492\u001b[0m \u001b[38;5;124;03mFit all the transformers one after the other and sequentially transform\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 530\u001b[0m \u001b[38;5;124;03m Transformed samples.\u001b[39;00m\n\u001b[0;32m 531\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 532\u001b[0m routed_params \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_method_params(method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit_transform\u001b[39m\u001b[38;5;124m\"\u001b[39m, props\u001b[38;5;241m=\u001b[39mparams)\n\u001b[1;32m--> 533\u001b[0m Xt \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrouted_params\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 535\u001b[0m last_step \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_final_estimator\n\u001b[0;32m 536\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPipeline\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_log_message(\u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)):\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\pipeline.py:406\u001b[0m, in \u001b[0;36mPipeline._fit\u001b[1;34m(self, X, y, routed_params)\u001b[0m\n\u001b[0;32m 404\u001b[0m cloned_transformer \u001b[38;5;241m=\u001b[39m clone(transformer)\n\u001b[0;32m 405\u001b[0m \u001b[38;5;66;03m# Fit or load from cache the current transformer\u001b[39;00m\n\u001b[1;32m--> 406\u001b[0m X, fitted_transformer \u001b[38;5;241m=\u001b[39m \u001b[43mfit_transform_one_cached\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 407\u001b[0m \u001b[43m \u001b[49m\u001b[43mcloned_transformer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 408\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 409\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 410\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 411\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage_clsname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPipeline\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 412\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_log_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstep_idx\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 413\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrouted_params\u001b[49m\u001b[43m[\u001b[49m\u001b[43mname\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 414\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 415\u001b[0m \u001b[38;5;66;03m# Replace the transformer of the step with the fitted\u001b[39;00m\n\u001b[0;32m 416\u001b[0m \u001b[38;5;66;03m# transformer. This is necessary when loading the transformer\u001b[39;00m\n\u001b[0;32m 417\u001b[0m \u001b[38;5;66;03m# from the cache.\u001b[39;00m\n\u001b[0;32m 418\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps[step_idx] \u001b[38;5;241m=\u001b[39m (name, fitted_transformer)\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\joblib\\memory.py:312\u001b[0m, in \u001b[0;36mNotMemorizedFunc.__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 311\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 312\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\pipeline.py:1310\u001b[0m, in \u001b[0;36m_fit_transform_one\u001b[1;34m(transformer, X, y, weight, message_clsname, message, params)\u001b[0m\n\u001b[0;32m 1308\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(message_clsname, message):\n\u001b[0;32m 1309\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(transformer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit_transform\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m-> 1310\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[43mtransformer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfit_transform\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1311\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1312\u001b[0m res \u001b[38;5;241m=\u001b[39m transformer\u001b[38;5;241m.\u001b[39mfit(X, y, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit\u001b[39m\u001b[38;5;124m\"\u001b[39m, {}))\u001b[38;5;241m.\u001b[39mtransform(\n\u001b[0;32m 1313\u001b[0m X, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtransform\u001b[39m\u001b[38;5;124m\"\u001b[39m, {})\n\u001b[0;32m 1314\u001b[0m )\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\utils\\_set_output.py:316\u001b[0m, in \u001b[0;36m_wrap_method_output.<locals>.wrapped\u001b[1;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[0;32m 314\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[0;32m 315\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 316\u001b[0m data_to_wrap \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 317\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[0;32m 318\u001b[0m \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[0;32m 319\u001b[0m return_tuple \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 320\u001b[0m _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[0;32m 321\u001b[0m \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[0;32m 322\u001b[0m )\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\base.py:1473\u001b[0m, in \u001b[0;36m_fit_context.<locals>.decorator.<locals>.wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1466\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1468\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1469\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1470\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1471\u001b[0m )\n\u001b[0;32m 1472\u001b[0m ):\n\u001b[1;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\compose\\_column_transformer.py:968\u001b[0m, in \u001b[0;36mColumnTransformer.fit_transform\u001b[1;34m(self, X, y, **params)\u001b[0m\n\u001b[0;32m 965\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_transformers()\n\u001b[0;32m 966\u001b[0m n_samples \u001b[38;5;241m=\u001b[39m _num_samples(X)\n\u001b[1;32m--> 968\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_column_callables\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 969\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_remainder(X)\n\u001b[0;32m 971\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _routing_enabled():\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\compose\\_column_transformer.py:536\u001b[0m, in \u001b[0;36mColumnTransformer._validate_column_callables\u001b[1;34m(self, X)\u001b[0m\n\u001b[0;32m 534\u001b[0m columns \u001b[38;5;241m=\u001b[39m columns(X)\n\u001b[0;32m 535\u001b[0m all_columns\u001b[38;5;241m.\u001b[39mappend(columns)\n\u001b[1;32m--> 536\u001b[0m transformer_to_input_indices[name] \u001b[38;5;241m=\u001b[39m \u001b[43m_get_column_indices\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcolumns\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 538\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_columns \u001b[38;5;241m=\u001b[39m all_columns\n\u001b[0;32m 539\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_transformer_to_input_indices \u001b[38;5;241m=\u001b[39m transformer_to_input_indices\n",
|
||||||
|
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_4\\venv\\Lib\\site-packages\\sklearn\\utils\\_indexing.py:369\u001b[0m, in \u001b[0;36m_get_column_indices\u001b[1;34m(X, key)\u001b[0m\n\u001b[0;32m 366\u001b[0m column_indices\u001b[38;5;241m.\u001b[39mappend(col_idx)\n\u001b[0;32m 368\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m--> 369\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mA given column is not a column of the dataframe\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n\u001b[0;32m 371\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m column_indices\n",
|
||||||
|
"\u001b[1;31mValueError\u001b[0m: A given column is not a column of the dataframe"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -1753,9 +1762,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 19,
|
"execution_count": 21,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"['model', 'pipeline', 'train_preds', 'preds', 'RMSE_train', 'RMSE_test', 'RMAE_test', 'R2_test']\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ename": "KeyError",
|
"ename": "KeyError",
|
||||||
"evalue": "'Confusion_matrix'",
|
"evalue": "'Confusion_matrix'",
|
||||||
@ -1763,7 +1779,7 @@
|
|||||||
"traceback": [
|
"traceback": [
|
||||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
|
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
|
||||||
"Cell \u001b[1;32mIn[19], line 19\u001b[0m\n\u001b[0;32m 16\u001b[0m fig, ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39msubplots(\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m2\u001b[39m, figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m12\u001b[39m, \u001b[38;5;241m10\u001b[39m))\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m index, (key, model_info) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(class_models\u001b[38;5;241m.\u001b[39mitems()):\n\u001b[1;32m---> 19\u001b[0m c_matrix \u001b[38;5;241m=\u001b[39m \u001b[43mmodel_info\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mConfusion_matrix\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[0;32m 21\u001b[0m \u001b[38;5;66;03m# Генерация кастомных цветов\u001b[39;00m\n\u001b[0;32m 22\u001b[0m disp \u001b[38;5;241m=\u001b[39m ConfusionMatrixDisplay(\n\u001b[0;32m 23\u001b[0m confusion_matrix\u001b[38;5;241m=\u001b[39mc_matrix, display_labels\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNot stroke\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mStroke\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 24\u001b[0m )\n",
|
"Cell \u001b[1;32mIn[21], line 8\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m index, (key, model_info) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(class_models\u001b[38;5;241m.\u001b[39mitems()):\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28mlist\u001b[39m(model_info\u001b[38;5;241m.\u001b[39mkeys()))\n\u001b[1;32m----> 8\u001b[0m c_matrix \u001b[38;5;241m=\u001b[39m \u001b[43mmodel_info\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mConfusion_matrix\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[0;32m 10\u001b[0m disp \u001b[38;5;241m=\u001b[39m ConfusionMatrixDisplay(\n\u001b[0;32m 11\u001b[0m confusion_matrix\u001b[38;5;241m=\u001b[39mc_matrix, display_labels\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNot stroke\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mStroke\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 12\u001b[0m )\u001b[38;5;241m.\u001b[39mplot(ax\u001b[38;5;241m=\u001b[39max\u001b[38;5;241m.\u001b[39mflat[index])\n\u001b[0;32m 14\u001b[0m disp\u001b[38;5;241m.\u001b[39max_\u001b[38;5;241m.\u001b[39mset_title(key)\n",
|
||||||
"\u001b[1;31mKeyError\u001b[0m: 'Confusion_matrix'"
|
"\u001b[1;31mKeyError\u001b[0m: 'Confusion_matrix'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -1781,30 +1797,17 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"from sklearn.metrics import ConfusionMatrixDisplay\n",
|
"from sklearn.metrics import ConfusionMatrixDisplay\n",
|
||||||
"import matplotlib.pyplot as plt\n",
|
"import matplotlib.pyplot as plt\n",
|
||||||
"import numpy as np\n",
|
|
||||||
"\n",
|
|
||||||
"# Цветовая схема: светло-голубой для правильных, бледно-красный для ошибок\n",
|
|
||||||
"def custom_color_map(c_matrix):\n",
|
|
||||||
" colors = np.empty_like(c_matrix, dtype=str)\n",
|
|
||||||
" for i in range(c_matrix.shape[0]):\n",
|
|
||||||
" for j in range(c_matrix.shape[1]):\n",
|
|
||||||
" if i == j:\n",
|
|
||||||
" colors[i, j] = \"#add8e6\" # Светло-голубой\n",
|
|
||||||
" else:\n",
|
|
||||||
" colors[i, j] = \"#f08080\" # Бледно-красный\n",
|
|
||||||
" return colors\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"fig, ax = plt.subplots(2, 2, figsize=(12, 10))\n",
|
"fig, ax = plt.subplots(2, 2, figsize=(12, 10))\n",
|
||||||
"\n",
|
"\n",
|
||||||
"for index, (key, model_info) in enumerate(class_models.items()):\n",
|
"for index, (key, model_info) in enumerate(class_models.items()):\n",
|
||||||
|
" print(list(model_info.keys()))\n",
|
||||||
" c_matrix = model_info[\"Confusion_matrix\"]\n",
|
" c_matrix = model_info[\"Confusion_matrix\"]\n",
|
||||||
"\n",
|
" \n",
|
||||||
" # Генерация кастомных цветов\n",
|
|
||||||
" disp = ConfusionMatrixDisplay(\n",
|
" disp = ConfusionMatrixDisplay(\n",
|
||||||
" confusion_matrix=c_matrix, display_labels=[\"Not stroke\", \"Stroke\"]\n",
|
" confusion_matrix=c_matrix, display_labels=[\"Not stroke\", \"Stroke\"]\n",
|
||||||
" )\n",
|
" ).plot(ax=ax.flat[index])\n",
|
||||||
" disp.plot(ax=ax.flat[index], cmap=custom_color_map(c_matrix), colorbar=False)\n",
|
" \n",
|
||||||
"\n",
|
|
||||||
" disp.ax_.set_title(key)\n",
|
" disp.ax_.set_title(key)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"if len(class_models) < len(ax.flat):\n",
|
"if len(class_models) < len(ax.flat):\n",
|
||||||
@ -1812,7 +1815,8 @@
|
|||||||
" fig.delaxes(ax.flat[i])\n",
|
" fig.delaxes(ax.flat[i])\n",
|
||||||
"\n",
|
"\n",
|
||||||
"plt.subplots_adjust(top=0.9, bottom=0.1, hspace=0.4, wspace=0.3)\n",
|
"plt.subplots_adjust(top=0.9, bottom=0.1, hspace=0.4, wspace=0.3)\n",
|
||||||
"plt.show()\n"
|
"\n",
|
||||||
|
"plt.show()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
5111
lab_5/csv/option4.csv
Normal file
5111
lab_5/csv/option4.csv
Normal file
File diff suppressed because it is too large
Load Diff
1180
lab_5/lab5.ipynb
Normal file
1180
lab_5/lab5.ipynb
Normal file
File diff suppressed because one or more lines are too long
70
lab_5/requirements.txt
Normal file
70
lab_5/requirements.txt
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
asttokens==2.4.1
|
||||||
|
certifi==2024.8.30
|
||||||
|
charset-normalizer==3.4.0
|
||||||
|
cloudpickle==3.1.0
|
||||||
|
colorama==0.4.6
|
||||||
|
comm==0.2.2
|
||||||
|
contourpy==1.3.0
|
||||||
|
cycler==0.12.1
|
||||||
|
debugpy==1.8.5
|
||||||
|
decorator==5.1.1
|
||||||
|
executing==2.1.0
|
||||||
|
featuretools==1.31.0
|
||||||
|
filelock==3.16.1
|
||||||
|
fonttools==4.53.1
|
||||||
|
fsspec==2024.10.0
|
||||||
|
holidays==0.59
|
||||||
|
huggingface-hub==0.26.2
|
||||||
|
idna==3.10
|
||||||
|
imbalanced-learn==0.12.4
|
||||||
|
importlib_resources==6.4.5
|
||||||
|
ipykernel==6.29.5
|
||||||
|
ipython==8.27.0
|
||||||
|
jedi==0.19.1
|
||||||
|
Jinja2==3.1.4
|
||||||
|
joblib==1.4.2
|
||||||
|
jupyter_client==8.6.2
|
||||||
|
jupyter_core==5.7.2
|
||||||
|
kiwisolver==1.4.7
|
||||||
|
MarkupSafe==3.0.2
|
||||||
|
matplotlib==3.9.2
|
||||||
|
matplotlib-inline==0.1.7
|
||||||
|
nest-asyncio==1.6.0
|
||||||
|
numpy==2.1.1
|
||||||
|
packaging==24.1
|
||||||
|
pandas==2.2.2
|
||||||
|
parso==0.8.4
|
||||||
|
pillow==10.4.0
|
||||||
|
platformdirs==4.3.3
|
||||||
|
prompt_toolkit==3.0.47
|
||||||
|
psutil==6.0.0
|
||||||
|
pure_eval==0.2.3
|
||||||
|
Pygments==2.18.0
|
||||||
|
pyparsing==3.1.4
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
python-utils==3.9.0
|
||||||
|
pytz==2024.2
|
||||||
|
pywin32==306
|
||||||
|
PyYAML==6.0.2
|
||||||
|
pyzmq==26.2.0
|
||||||
|
regex==2024.11.6
|
||||||
|
requests==2.32.3
|
||||||
|
safetensors==0.4.5
|
||||||
|
scikit-learn==1.5.2
|
||||||
|
scipy==1.14.1
|
||||||
|
seaborn==0.13.2
|
||||||
|
setuptools==75.3.0
|
||||||
|
six==1.16.0
|
||||||
|
smogn==0.1.2
|
||||||
|
stack-data==0.6.3
|
||||||
|
threadpoolctl==3.5.0
|
||||||
|
tokenizers==0.20.3
|
||||||
|
tornado==6.4.1
|
||||||
|
tqdm==4.66.5
|
||||||
|
traitlets==5.14.3
|
||||||
|
transformers==4.46.2
|
||||||
|
typing_extensions==4.12.2
|
||||||
|
tzdata==2024.1
|
||||||
|
urllib3==2.2.3
|
||||||
|
wcwidth==0.2.13
|
||||||
|
woodwork==0.31.0
|
502
lab_5/vev/Scripts/Activate.ps1
Normal file
502
lab_5/vev/Scripts/Activate.ps1
Normal file
@ -0,0 +1,502 @@
|
|||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Activate a Python virtual environment for the current PowerShell session.
|
||||||
|
|
||||||
|
.Description
|
||||||
|
Pushes the python executable for a virtual environment to the front of the
|
||||||
|
$Env:PATH environment variable and sets the prompt to signify that you are
|
||||||
|
in a Python virtual environment. Makes use of the command line switches as
|
||||||
|
well as the `pyvenv.cfg` file values present in the virtual environment.
|
||||||
|
|
||||||
|
.Parameter VenvDir
|
||||||
|
Path to the directory that contains the virtual environment to activate. The
|
||||||
|
default value for this is the parent of the directory that the Activate.ps1
|
||||||
|
script is located within.
|
||||||
|
|
||||||
|
.Parameter Prompt
|
||||||
|
The prompt prefix to display when this virtual environment is activated. By
|
||||||
|
default, this prompt is the name of the virtual environment folder (VenvDir)
|
||||||
|
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1
|
||||||
|
Activates the Python virtual environment that contains the Activate.ps1 script.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1 -Verbose
|
||||||
|
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||||
|
and shows extra information about the activation as it executes.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
|
||||||
|
Activates the Python virtual environment located in the specified location.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1 -Prompt "MyPython"
|
||||||
|
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||||
|
and prefixes the current prompt with the specified string (surrounded in
|
||||||
|
parentheses) while the virtual environment is active.
|
||||||
|
|
||||||
|
.Notes
|
||||||
|
On Windows, it may be required to enable this Activate.ps1 script by setting the
|
||||||
|
execution policy for the user. You can do this by issuing the following PowerShell
|
||||||
|
command:
|
||||||
|
|
||||||
|
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||||
|
|
||||||
|
For more information on Execution Policies:
|
||||||
|
https://go.microsoft.com/fwlink/?LinkID=135170
|
||||||
|
|
||||||
|
#>
|
||||||
|
Param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[String]
|
||||||
|
$VenvDir,
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[String]
|
||||||
|
$Prompt
|
||||||
|
)
|
||||||
|
|
||||||
|
<# Function declarations --------------------------------------------------- #>
|
||||||
|
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Remove all shell session elements added by the Activate script, including the
|
||||||
|
addition of the virtual environment's Python executable from the beginning of
|
||||||
|
the PATH variable.
|
||||||
|
|
||||||
|
.Parameter NonDestructive
|
||||||
|
If present, do not remove this function from the global namespace for the
|
||||||
|
session.
|
||||||
|
|
||||||
|
#>
|
||||||
|
function global:deactivate ([switch]$NonDestructive) {
|
||||||
|
# Revert to original values
|
||||||
|
|
||||||
|
# The prior prompt:
|
||||||
|
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
|
||||||
|
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
|
||||||
|
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
|
||||||
|
}
|
||||||
|
|
||||||
|
# The prior PYTHONHOME:
|
||||||
|
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
|
||||||
|
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
|
||||||
|
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
|
||||||
|
}
|
||||||
|
|
||||||
|
# The prior PATH:
|
||||||
|
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
|
||||||
|
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
|
||||||
|
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just remove the VIRTUAL_ENV altogether:
|
||||||
|
if (Test-Path -Path Env:VIRTUAL_ENV) {
|
||||||
|
Remove-Item -Path env:VIRTUAL_ENV
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just remove VIRTUAL_ENV_PROMPT altogether.
|
||||||
|
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
|
||||||
|
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
|
||||||
|
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
|
||||||
|
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
# Leave deactivate function in the global namespace if requested:
|
||||||
|
if (-not $NonDestructive) {
|
||||||
|
Remove-Item -Path function:deactivate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<#
|
||||||
|
.Description
|
||||||
|
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
|
||||||
|
given folder, and returns them in a map.
|
||||||
|
|
||||||
|
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
|
||||||
|
two strings separated by `=` (with any amount of whitespace surrounding the =)
|
||||||
|
then it is considered a `key = value` line. The left hand string is the key,
|
||||||
|
the right hand is the value.
|
||||||
|
|
||||||
|
If the value starts with a `'` or a `"` then the first and last character is
|
||||||
|
stripped from the value before being captured.
|
||||||
|
|
||||||
|
.Parameter ConfigDir
|
||||||
|
Path to the directory that contains the `pyvenv.cfg` file.
|
||||||
|
#>
|
||||||
|
function Get-PyVenvConfig(
|
||||||
|
[String]
|
||||||
|
$ConfigDir
|
||||||
|
) {
|
||||||
|
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
|
||||||
|
|
||||||
|
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
|
||||||
|
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
|
||||||
|
|
||||||
|
# An empty map will be returned if no config file is found.
|
||||||
|
$pyvenvConfig = @{ }
|
||||||
|
|
||||||
|
if ($pyvenvConfigPath) {
|
||||||
|
|
||||||
|
Write-Verbose "File exists, parse `key = value` lines"
|
||||||
|
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
|
||||||
|
|
||||||
|
$pyvenvConfigContent | ForEach-Object {
|
||||||
|
$keyval = $PSItem -split "\s*=\s*", 2
|
||||||
|
if ($keyval[0] -and $keyval[1]) {
|
||||||
|
$val = $keyval[1]
|
||||||
|
|
||||||
|
# Remove extraneous quotations around a string value.
|
||||||
|
if ("'""".Contains($val.Substring(0, 1))) {
|
||||||
|
$val = $val.Substring(1, $val.Length - 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
$pyvenvConfig[$keyval[0]] = $val
|
||||||
|
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $pyvenvConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
<# Begin Activate script --------------------------------------------------- #>
|
||||||
|
|
||||||
|
# Determine the containing directory of this script
|
||||||
|
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||||
|
$VenvExecDir = Get-Item -Path $VenvExecPath
|
||||||
|
|
||||||
|
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
|
||||||
|
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
|
||||||
|
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
|
||||||
|
|
||||||
|
# Set values required in priority: CmdLine, ConfigFile, Default
|
||||||
|
# First, get the location of the virtual environment, it might not be
|
||||||
|
# VenvExecDir if specified on the command line.
|
||||||
|
if ($VenvDir) {
|
||||||
|
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
|
||||||
|
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
|
||||||
|
Write-Verbose "VenvDir=$VenvDir"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Next, read the `pyvenv.cfg` file to determine any required value such
|
||||||
|
# as `prompt`.
|
||||||
|
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
|
||||||
|
|
||||||
|
# Next, set the prompt from the command line, or the config file, or
|
||||||
|
# just use the name of the virtual environment folder.
|
||||||
|
if ($Prompt) {
|
||||||
|
Write-Verbose "Prompt specified as argument, using '$Prompt'"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
|
||||||
|
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
|
||||||
|
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
|
||||||
|
$Prompt = $pyvenvCfg['prompt'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
|
||||||
|
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
|
||||||
|
$Prompt = Split-Path -Path $venvDir -Leaf
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Prompt = '$Prompt'"
|
||||||
|
Write-Verbose "VenvDir='$VenvDir'"
|
||||||
|
|
||||||
|
# Deactivate any currently active virtual environment, but leave the
|
||||||
|
# deactivate function in place.
|
||||||
|
deactivate -nondestructive
|
||||||
|
|
||||||
|
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
|
||||||
|
# that there is an activated venv.
|
||||||
|
$env:VIRTUAL_ENV = $VenvDir
|
||||||
|
|
||||||
|
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
|
||||||
|
|
||||||
|
Write-Verbose "Setting prompt to '$Prompt'"
|
||||||
|
|
||||||
|
# Set the prompt to include the env name
|
||||||
|
# Make sure _OLD_VIRTUAL_PROMPT is global
|
||||||
|
function global:_OLD_VIRTUAL_PROMPT { "" }
|
||||||
|
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
|
||||||
|
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
|
||||||
|
|
||||||
|
function global:prompt {
|
||||||
|
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
|
||||||
|
_OLD_VIRTUAL_PROMPT
|
||||||
|
}
|
||||||
|
$env:VIRTUAL_ENV_PROMPT = $Prompt
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clear PYTHONHOME
|
||||||
|
if (Test-Path -Path Env:PYTHONHOME) {
|
||||||
|
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
|
||||||
|
Remove-Item -Path Env:PYTHONHOME
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add the venv to the PATH
|
||||||
|
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
|
||||||
|
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"
|
||||||
|
|
||||||
|
# SIG # Begin signature block
|
||||||
|
# MIIvIwYJKoZIhvcNAQcCoIIvFDCCLxACAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||||
|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||||
|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBnL745ElCYk8vk
|
||||||
|
# dBtMuQhLeWJ3ZGfzKW4DHCYzAn+QB6CCE8MwggWQMIIDeKADAgECAhAFmxtXno4h
|
||||||
|
# MuI5B72nd3VcMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
||||||
|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
|
||||||
|
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0xMzA4MDExMjAwMDBaFw0z
|
||||||
|
# ODAxMTUxMjAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
|
||||||
|
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0
|
||||||
|
# IFRydXN0ZWQgUm9vdCBHNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
|
||||||
|
# AL/mkHNo3rvkXUo8MCIwaTPswqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3EMB/z
|
||||||
|
# G6Q4FutWxpdtHauyefLKEdLkX9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKyunWZ
|
||||||
|
# anMylNEQRBAu34LzB4TmdDttceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsFxl7s
|
||||||
|
# Wxq868nPzaw0QF+xembud8hIqGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU15zHL
|
||||||
|
# 2pNe3I6PgNq2kZhAkHnDeMe2scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJBMtfb
|
||||||
|
# BHMqbpEBfCFM1LyuGwN1XXhm2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObURWBf3
|
||||||
|
# JFxGj2T3wWmIdph2PVldQnaHiZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6nj3c
|
||||||
|
# AORFJYm2mkQZK37AlLTSYW3rM9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxBYKqx
|
||||||
|
# YxhElRp2Yn72gLD76GSmM9GJB+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5SUUd0
|
||||||
|
# viastkF13nqsX40/ybzTQRESW+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+xq4aL
|
||||||
|
# T8LWRV+dIPyhHsXAj6KxfgommfXkaS+YHS312amyHeUbAgMBAAGjQjBAMA8GA1Ud
|
||||||
|
# EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTs1+OC0nFdZEzf
|
||||||
|
# Lmc/57qYrhwPTzANBgkqhkiG9w0BAQwFAAOCAgEAu2HZfalsvhfEkRvDoaIAjeNk
|
||||||
|
# aA9Wz3eucPn9mkqZucl4XAwMX+TmFClWCzZJXURj4K2clhhmGyMNPXnpbWvWVPjS
|
||||||
|
# PMFDQK4dUPVS/JA7u5iZaWvHwaeoaKQn3J35J64whbn2Z006Po9ZOSJTROvIXQPK
|
||||||
|
# 7VB6fWIhCoDIc2bRoAVgX+iltKevqPdtNZx8WorWojiZ83iL9E3SIAveBO6Mm0eB
|
||||||
|
# cg3AFDLvMFkuruBx8lbkapdvklBtlo1oepqyNhR6BvIkuQkRUNcIsbiJeoQjYUIp
|
||||||
|
# 5aPNoiBB19GcZNnqJqGLFNdMGbJQQXE9P01wI4YMStyB0swylIQNCAmXHE/A7msg
|
||||||
|
# dDDS4Dk0EIUhFQEI6FUy3nFJ2SgXUE3mvk3RdazQyvtBuEOlqtPDBURPLDab4vri
|
||||||
|
# RbgjU2wGb2dVf0a1TD9uKFp5JtKkqGKX0h7i7UqLvBv9R0oN32dmfrJbQdA75PQ7
|
||||||
|
# 9ARj6e/CVABRoIoqyc54zNXqhwQYs86vSYiv85KZtrPmYQ/ShQDnUBrkG5WdGaG5
|
||||||
|
# nLGbsQAe79APT0JsyQq87kP6OnGlyE0mpTX9iV28hWIdMtKgK1TtmlfB2/oQzxm3
|
||||||
|
# i0objwG2J5VT6LaJbVu8aNQj6ItRolb58KaAoNYes7wPD1N1KarqE3fk3oyBIa0H
|
||||||
|
# EEcRrYc9B9F1vM/zZn4wggawMIIEmKADAgECAhAIrUCyYNKcTJ9ezam9k67ZMA0G
|
||||||
|
# CSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
|
||||||
|
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0
|
||||||
|
# IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0zNjA0MjgyMzU5NTla
|
||||||
|
# MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE
|
||||||
|
# AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz
|
||||||
|
# ODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDVtC9C
|
||||||
|
# 0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0JAfhS0/TeEP0F9ce
|
||||||
|
# 2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJrQ5qZ8sU7H/Lvy0da
|
||||||
|
# E6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhFLqGfLOEYwhrMxe6T
|
||||||
|
# SXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+FLEikVoQ11vkunKoA
|
||||||
|
# FdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh3K3kGKDYwSNHR7Oh
|
||||||
|
# D26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJwZPt4bRc4G/rJvmM
|
||||||
|
# 1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQayg9Rc9hUZTO1i4F4z
|
||||||
|
# 8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbIYViY9XwCFjyDKK05
|
||||||
|
# huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchApQfDVxW0mdmgRQRNY
|
||||||
|
# mtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRroOBl8ZhzNeDhFMJlP
|
||||||
|
# /2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IBWTCCAVUwEgYDVR0T
|
||||||
|
# AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHwYD
|
||||||
|
# VR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGGMBMG
|
||||||
|
# A1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcwAYYY
|
||||||
|
# aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8vY2Fj
|
||||||
|
# ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBDBgNV
|
||||||
|
# HR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRU
|
||||||
|
# cnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAEDMAgGBmeBDAEEATAN
|
||||||
|
# BgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql+Eg08yy25nRm95Ry
|
||||||
|
# sQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFFUP2cvbaF4HZ+N3HL
|
||||||
|
# IvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1hmYFW9snjdufE5Btf
|
||||||
|
# Q/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3RywYFzzDaju4ImhvTnh
|
||||||
|
# OE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5UbdldAhQfQDN8A+KVssIh
|
||||||
|
# dXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw8MzK7/0pNVwfiThV
|
||||||
|
# 9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnPLqR0kq3bPKSchh/j
|
||||||
|
# wVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatEQOON8BUozu3xGFYH
|
||||||
|
# Ki8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bnKD+sEq6lLyJsQfmC
|
||||||
|
# XBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQjiWQ1tygVQK+pKHJ6l
|
||||||
|
# /aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbqyK+p/pQd52MbOoZW
|
||||||
|
# eE4wggd3MIIFX6ADAgECAhAHHxQbizANJfMU6yMM0NHdMA0GCSqGSIb3DQEBCwUA
|
||||||
|
# MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE
|
||||||
|
# AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz
|
||||||
|
# ODQgMjAyMSBDQTEwHhcNMjIwMTE3MDAwMDAwWhcNMjUwMTE1MjM1OTU5WjB8MQsw
|
||||||
|
# CQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMRIwEAYDVQQHEwlCZWF2ZXJ0b24x
|
||||||
|
# IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMSMwIQYDVQQDExpQ
|
||||||
|
# eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
||||||
|
# ADCCAgoCggIBAKgc0BTT+iKbtK6f2mr9pNMUTcAJxKdsuOiSYgDFfwhjQy89koM7
|
||||||
|
# uP+QV/gwx8MzEt3c9tLJvDccVWQ8H7mVsk/K+X+IufBLCgUi0GGAZUegEAeRlSXx
|
||||||
|
# xhYScr818ma8EvGIZdiSOhqjYc4KnfgfIS4RLtZSrDFG2tN16yS8skFa3IHyvWdb
|
||||||
|
# D9PvZ4iYNAS4pjYDRjT/9uzPZ4Pan+53xZIcDgjiTwOh8VGuppxcia6a7xCyKoOA
|
||||||
|
# GjvCyQsj5223v1/Ig7Dp9mGI+nh1E3IwmyTIIuVHyK6Lqu352diDY+iCMpk9Zanm
|
||||||
|
# SjmB+GMVs+H/gOiofjjtf6oz0ki3rb7sQ8fTnonIL9dyGTJ0ZFYKeb6BLA66d2GA
|
||||||
|
# LwxZhLe5WH4Np9HcyXHACkppsE6ynYjTOd7+jN1PRJahN1oERzTzEiV6nCO1M3U1
|
||||||
|
# HbPTGyq52IMFSBM2/07WTJSbOeXjvYR7aUxK9/ZkJiacl2iZI7IWe7JKhHohqKuc
|
||||||
|
# eQNyOzxTakLcRkzynvIrk33R9YVqtB4L6wtFxhUjvDnQg16xot2KVPdfyPAWd81w
|
||||||
|
# tZADmrUtsZ9qG79x1hBdyOl4vUtVPECuyhCxaw+faVjumapPUnwo8ygflJJ74J+B
|
||||||
|
# Yxf6UuD7m8yzsfXWkdv52DjL74TxzuFTLHPyARWCSCAbzn3ZIly+qIqDAgMBAAGj
|
||||||
|
# ggIGMIICAjAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4E
|
||||||
|
# FgQUt/1Teh2XDuUj2WW3siYWJgkZHA8wDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
|
||||||
|
# MAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRp
|
||||||
|
# Z2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNI
|
||||||
|
# QTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20v
|
||||||
|
# RGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0Ex
|
||||||
|
# LmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRwOi8v
|
||||||
|
# d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUF
|
||||||
|
# BzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6
|
||||||
|
# Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWdu
|
||||||
|
# aW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZI
|
||||||
|
# hvcNAQELBQADggIBABxv4AeV/5ltkELHSC63fXAFYS5tadcWTiNc2rskrNLrfH1N
|
||||||
|
# s0vgSZFoQxYBFKI159E8oQQ1SKbTEubZ/B9kmHPhprHya08+VVzxC88pOEvz68nA
|
||||||
|
# 82oEM09584aILqYmj8Pj7h/kmZNzuEL7WiwFa/U1hX+XiWfLIJQsAHBla0i7QRF2
|
||||||
|
# de8/VSF0XXFa2kBQ6aiTsiLyKPNbaNtbcucaUdn6vVUS5izWOXM95BSkFSKdE45O
|
||||||
|
# q3FForNJXjBvSCpwcP36WklaHL+aHu1upIhCTUkzTHMh8b86WmjRUqbrnvdyR2yd
|
||||||
|
# I5l1OqcMBjkpPpIV6wcc+KY/RH2xvVuuoHjlUjwq2bHiNoX+W1scCpnA8YTs2d50
|
||||||
|
# jDHUgwUo+ciwpffH0Riq132NFmrH3r67VaN3TuBxjI8SIZM58WEDkbeoriDk3hxU
|
||||||
|
# 8ZWV7b8AW6oyVBGfM06UgkfMb58h+tJPrFx8VI/WLq1dTqMfZOm5cuclMnUHs2uq
|
||||||
|
# rRNtnV8UfidPBL4ZHkTcClQbCoz0UbLhkiDvIS00Dn+BBcxw/TKqVL4Oaz3bkMSs
|
||||||
|
# M46LciTeucHY9ExRVt3zy7i149sd+F4QozPqn7FrSVHXmem3r7bjyHTxOgqxRCVa
|
||||||
|
# 18Vtx7P/8bYSBeS+WHCKcliFCecspusCDSlnRUjZwyPdP0VHxaZg2unjHY3rMYIa
|
||||||
|
# tjCCGrICAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
|
||||||
|
# Yy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJT
|
||||||
|
# QTQwOTYgU0hBMzg0IDIwMjEgQ0ExAhAHHxQbizANJfMU6yMM0NHdMA0GCWCGSAFl
|
||||||
|
# AwQCAQUAoIHIMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC
|
||||||
|
# AQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCBnAZ6P7YvTwq0fbF62
|
||||||
|
# o7E75R0LxsW5OtyYiFESQckLhjBcBgorBgEEAYI3AgEMMU4wTKBGgEQAQgB1AGkA
|
||||||
|
# bAB0ADoAIABSAGUAbABlAGEAcwBlAF8AdgAzAC4AMQAyAC4ANgBfADIAMAAyADQA
|
||||||
|
# MAA5ADAANgAuADAAMqECgAAwDQYJKoZIhvcNAQEBBQAEggIAhen5GN03SF9I96DT
|
||||||
|
# rrWEsN7FAyx8BHoRf9WFBqoBXpFkBwlE6OWj/rxohuwB/b+3vcBGWaP497ACku4l
|
||||||
|
# lgrWCrmYOVMKTjeHtDDkvgmygvGAtWB5drf56553na9RYjTxRqxto5LBMsHtPZy6
|
||||||
|
# 1D+touyLSHx+QXzqXO4ssUq7oHtsmjDCKMLdcTuoqNGtpxaIwwlOAK+0DaLLUpkX
|
||||||
|
# VRUUzMWBb+2FlmJ2wWtXXs6OtlACm4By2hHmKhd6OYwnHPe6fDVdrhGa0BcDAIIO
|
||||||
|
# +elm895ddmfX2KqHWrKpgZ/0DM46pbEiYX4GVwY+kmrK9p8XF7c50c331vPPuImL
|
||||||
|
# URRShtCM9F/5e522nQm0NxQ0Pz+thMD+qGBA8WuSoD+RRG+JKOXgM8sMX46goR8P
|
||||||
|
# 1IJLeUnEKSOgMNcP0EUeWthrqXRjVgNcazIDgPFpPGMyo4Pp0D8SPvp/RzP3CPVo
|
||||||
|
# uVj6r0OnhyoDuDEX4KCyo/+TCSm+2T+hv+cPWQaukovXF1TmahWb/8j1+K1RkCVd
|
||||||
|
# UQ5v07AHYoHmJ2gxEgtM9qaVDx4woVVCpUrOhiAP/K1WSRw710oTqECG+4y+g67D
|
||||||
|
# P2UuOxxaxhPk0pITFj9pZQcVsrCk5QbW3Yj/I3fISZgjVfYK1IDKzaWQQuBhOuim
|
||||||
|
# j2/Tfcg+cLDbY4XEs5vpbKSYsCWhghc/MIIXOwYKKwYBBAGCNwMDATGCFyswghcn
|
||||||
|
# BgkqhkiG9w0BBwKgghcYMIIXFAIBAzEPMA0GCWCGSAFlAwQCAQUAMHcGCyqGSIb3
|
||||||
|
# DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEwMTANBglghkgBZQMEAgEFAAQgS2eq
|
||||||
|
# 9RcYET/J2twNl3zStqvYDUBOrSdHvMcFbSu+C2sCEGHEWhqgAhMA1D+QZOB9TC4Y
|
||||||
|
# DzIwMjQwOTA2MjAyNzExWqCCEwkwggbCMIIEqqADAgECAhAFRK/zlJ0IOaa/2z9f
|
||||||
|
# 5WEWMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdp
|
||||||
|
# Q2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0MDk2
|
||||||
|
# IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EwHhcNMjMwNzE0MDAwMDAwWhcNMzQxMDEz
|
||||||
|
# MjM1OTU5WjBIMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4x
|
||||||
|
# IDAeBgNVBAMTF0RpZ2lDZXJ0IFRpbWVzdGFtcCAyMDIzMIICIjANBgkqhkiG9w0B
|
||||||
|
# AQEFAAOCAg8AMIICCgKCAgEAo1NFhx2DjlusPlSzI+DPn9fl0uddoQ4J3C9Io5d6
|
||||||
|
# OyqcZ9xiFVjBqZMRp82qsmrdECmKHmJjadNYnDVxvzqX65RQjxwg6seaOy+WZuNp
|
||||||
|
# 52n+W8PWKyAcwZeUtKVQgfLPywemMGjKg0La/H8JJJSkghraarrYO8pd3hkYhftF
|
||||||
|
# 6g1hbJ3+cV7EBpo88MUueQ8bZlLjyNY+X9pD04T10Mf2SC1eRXWWdf7dEKEbg8G4
|
||||||
|
# 5lKVtUfXeCk5a+B4WZfjRCtK1ZXO7wgX6oJkTf8j48qG7rSkIWRw69XloNpjsy7p
|
||||||
|
# Be6q9iT1HbybHLK3X9/w7nZ9MZllR1WdSiQvrCuXvp/k/XtzPjLuUjT71Lvr1KAs
|
||||||
|
# NJvj3m5kGQc3AZEPHLVRzapMZoOIaGK7vEEbeBlt5NkP4FhB+9ixLOFRr7StFQYU
|
||||||
|
# 6mIIE9NpHnxkTZ0P387RXoyqq1AVybPKvNfEO2hEo6U7Qv1zfe7dCv95NBB+plwK
|
||||||
|
# WEwAPoVpdceDZNZ1zY8SdlalJPrXxGshuugfNJgvOuprAbD3+yqG7HtSOKmYCaFx
|
||||||
|
# smxxrz64b5bV4RAT/mFHCoz+8LbH1cfebCTwv0KCyqBxPZySkwS0aXAnDU+3tTbR
|
||||||
|
# yV8IpHCj7ArxES5k4MsiK8rxKBMhSVF+BmbTO77665E42FEHypS34lCh8zrTioPL
|
||||||
|
# QHsCAwEAAaOCAYswggGHMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBYG
|
||||||
|
# A1UdJQEB/wQMMAoGCCsGAQUFBwMIMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCG
|
||||||
|
# SAGG/WwHATAfBgNVHSMEGDAWgBS6FtltTYUvcyl2mi91jGogj57IbzAdBgNVHQ4E
|
||||||
|
# FgQUpbbvE+fvzdBkodVWqWUxo97V40kwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDov
|
||||||
|
# L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNIQTI1
|
||||||
|
# NlRpbWVTdGFtcGluZ0NBLmNybDCBkAYIKwYBBQUHAQEEgYMwgYAwJAYIKwYBBQUH
|
||||||
|
# MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBYBggrBgEFBQcwAoZMaHR0cDov
|
||||||
|
# L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNI
|
||||||
|
# QTI1NlRpbWVTdGFtcGluZ0NBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAgRrW3qCp
|
||||||
|
# tZgXvHCNT4o8aJzYJf/LLOTN6l0ikuyMIgKpuM+AqNnn48XtJoKKcS8Y3U623mzX
|
||||||
|
# 4WCcK+3tPUiOuGu6fF29wmE3aEl3o+uQqhLXJ4Xzjh6S2sJAOJ9dyKAuJXglnSoF
|
||||||
|
# eoQpmLZXeY/bJlYrsPOnvTcM2Jh2T1a5UsK2nTipgedtQVyMadG5K8TGe8+c+nji
|
||||||
|
# kxp2oml101DkRBK+IA2eqUTQ+OVJdwhaIcW0z5iVGlS6ubzBaRm6zxbygzc0brBB
|
||||||
|
# Jt3eWpdPM43UjXd9dUWhpVgmagNF3tlQtVCMr1a9TMXhRsUo063nQwBw3syYnhmJ
|
||||||
|
# A+rUkTfvTVLzyWAhxFZH7doRS4wyw4jmWOK22z75X7BC1o/jF5HRqsBV44a/rCcs
|
||||||
|
# QdCaM0qoNtS5cpZ+l3k4SF/Kwtw9Mt911jZnWon49qfH5U81PAC9vpwqbHkB3NpE
|
||||||
|
# 5jreODsHXjlY9HxzMVWggBHLFAx+rrz+pOt5Zapo1iLKO+uagjVXKBbLafIymrLS
|
||||||
|
# 2Dq4sUaGa7oX/cR3bBVsrquvczroSUa31X/MtjjA2Owc9bahuEMs305MfR5ocMB3
|
||||||
|
# CtQC4Fxguyj/OOVSWtasFyIjTvTs0xf7UGv/B3cfcZdEQcm4RtNsMnxYL2dHZeUb
|
||||||
|
# c7aZ+WssBkbvQR7w8F/g29mtkIBEr4AQQYowggauMIIElqADAgECAhAHNje3JFR8
|
||||||
|
# 2Ees/ShmKl5bMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
||||||
|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
|
||||||
|
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMjAzMjMwMDAwMDBaFw0z
|
||||||
|
# NzAzMjIyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
|
||||||
|
# SW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0MDk2IFNIQTI1
|
||||||
|
# NiBUaW1lU3RhbXBpbmcgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||||
|
# AQDGhjUGSbPBPXJJUVXHJQPE8pE3qZdRodbSg9GeTKJtoLDMg/la9hGhRBVCX6SI
|
||||||
|
# 82j6ffOciQt/nR+eDzMfUBMLJnOWbfhXqAJ9/UO0hNoR8XOxs+4rgISKIhjf69o9
|
||||||
|
# xBd/qxkrPkLcZ47qUT3w1lbU5ygt69OxtXXnHwZljZQp09nsad/ZkIdGAHvbREGJ
|
||||||
|
# 3HxqV3rwN3mfXazL6IRktFLydkf3YYMZ3V+0VAshaG43IbtArF+y3kp9zvU5Emfv
|
||||||
|
# DqVjbOSmxR3NNg1c1eYbqMFkdECnwHLFuk4fsbVYTXn+149zk6wsOeKlSNbwsDET
|
||||||
|
# qVcplicu9Yemj052FVUmcJgmf6AaRyBD40NjgHt1biclkJg6OBGz9vae5jtb7IHe
|
||||||
|
# IhTZgirHkr+g3uM+onP65x9abJTyUpURK1h0QCirc0PO30qhHGs4xSnzyqqWc0Jo
|
||||||
|
# n7ZGs506o9UD4L/wojzKQtwYSH8UNM/STKvvmz3+DrhkKvp1KCRB7UK/BZxmSVJQ
|
||||||
|
# 9FHzNklNiyDSLFc1eSuo80VgvCONWPfcYd6T/jnA+bIwpUzX6ZhKWD7TA4j+s4/T
|
||||||
|
# Xkt2ElGTyYwMO1uKIqjBJgj5FBASA31fI7tk42PgpuE+9sJ0sj8eCXbsq11GdeJg
|
||||||
|
# o1gJASgADoRU7s7pXcheMBK9Rp6103a50g5rmQzSM7TNsQIDAQABo4IBXTCCAVkw
|
||||||
|
# EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUuhbZbU2FL3MpdpovdYxqII+e
|
||||||
|
# yG8wHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQD
|
||||||
|
# AgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsGAQUFBwEBBGswaTAkBggrBgEF
|
||||||
|
# BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRw
|
||||||
|
# Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNy
|
||||||
|
# dDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGln
|
||||||
|
# aUNlcnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglg
|
||||||
|
# hkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBAH1ZjsCTtm+YqUQiAX5m1tghQuGw
|
||||||
|
# GC4QTRPPMFPOvxj7x1Bd4ksp+3CKDaopafxpwc8dB+k+YMjYC+VcW9dth/qEICU0
|
||||||
|
# MWfNthKWb8RQTGIdDAiCqBa9qVbPFXONASIlzpVpP0d3+3J0FNf/q0+KLHqrhc1D
|
||||||
|
# X+1gtqpPkWaeLJ7giqzl/Yy8ZCaHbJK9nXzQcAp876i8dU+6WvepELJd6f8oVInw
|
||||||
|
# 1YpxdmXazPByoyP6wCeCRK6ZJxurJB4mwbfeKuv2nrF5mYGjVoarCkXJ38SNoOeY
|
||||||
|
# +/umnXKvxMfBwWpx2cYTgAnEtp/Nh4cku0+jSbl3ZpHxcpzpSwJSpzd+k1OsOx0I
|
||||||
|
# SQ+UzTl63f8lY5knLD0/a6fxZsNBzU+2QJshIUDQtxMkzdwdeDrknq3lNHGS1yZr
|
||||||
|
# 5Dhzq6YBT70/O3itTK37xJV77QpfMzmHQXh6OOmc4d0j/R0o08f56PGYX/sr2H7y
|
||||||
|
# Rp11LB4nLCbbbxV7HhmLNriT1ObyF5lZynDwN7+YAN8gFk8n+2BnFqFmut1VwDop
|
||||||
|
# hrCYoCvtlUG3OtUVmDG0YgkPCr2B2RP+v6TR81fZvAT6gt4y3wSJ8ADNXcL50CN/
|
||||||
|
# AAvkdgIm2fBldkKmKYcJRyvmfxqkhQ/8mJb2VVQrH4D6wPIOK+XW+6kvRBVK5xMO
|
||||||
|
# Hds3OBqhK/bt1nz8MIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkq
|
||||||
|
# hkiG9w0BAQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
|
||||||
|
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBB
|
||||||
|
# c3N1cmVkIElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5
|
||||||
|
# WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
||||||
|
# ExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJv
|
||||||
|
# b3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1K
|
||||||
|
# PDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2r
|
||||||
|
# snnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C
|
||||||
|
# 8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBf
|
||||||
|
# sXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
|
||||||
|
# QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8
|
||||||
|
# rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaY
|
||||||
|
# dj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+
|
||||||
|
# wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw
|
||||||
|
# ++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+N
|
||||||
|
# P8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7F
|
||||||
|
# wI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUw
|
||||||
|
# AwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAU
|
||||||
|
# Reuir/SSy4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEB
|
||||||
|
# BG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsG
|
||||||
|
# AQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
|
||||||
|
# cmVkSURSb290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRp
|
||||||
|
# Z2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAow
|
||||||
|
# CDAGBgRVHSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/
|
||||||
|
# Vwe9mqyhhyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLe
|
||||||
|
# JLxSA8hO0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE
|
||||||
|
# 1Od/6Fmo8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9Hda
|
||||||
|
# XFSMb++hUD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbO
|
||||||
|
# byMt9H5xaiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMYID
|
||||||
|
# djCCA3ICAQEwdzBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
|
||||||
|
# Yy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEyNTYg
|
||||||
|
# VGltZVN0YW1waW5nIENBAhAFRK/zlJ0IOaa/2z9f5WEWMA0GCWCGSAFlAwQCAQUA
|
||||||
|
# oIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcN
|
||||||
|
# MjQwOTA2MjAyNzExWjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBRm8CsywsLJD4Jd
|
||||||
|
# zqqKycZPGZzPQDAvBgkqhkiG9w0BCQQxIgQgXSdFKsIxhS4gvdZFC5i8csELx4EN
|
||||||
|
# gje4K7DDRX8dz3AwNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQg0vbkbe10IszR1EBX
|
||||||
|
# aEE2b4KK2lWarjMWr00amtQMeCgwDQYJKoZIhvcNAQEBBQAEggIAYX9aC647tWiS
|
||||||
|
# rGwjsC+5s2CosHEwRzUG9YNI58OJgUfCwsfgMkgKWkSi/K7mumf5RHkU+P+HCwoy
|
||||||
|
# kvIOZ7viK9fcAkK9zS3eKPUA6mGQS11yEnEhRUZbrrsG1uHQO+gSO2SgyLs8+3vX
|
||||||
|
# /8+YEl1IkGbw4/oeLavq79jULQqZ6/00n0E0nFDmbprjFK4wUX4CoIqt8AAWCt4F
|
||||||
|
# Az8XwvYxa63A2JQmeDzDAWR4lfNbREQaC3MdnqbnvQIBQUspJsn3t7zxU+ubzCez
|
||||||
|
# kCkk+7Tt5FFCP9OJvc/BEv3HcXrTAoZ4VFfAwL9K1DQ4A3hbsvKlwV0OxZlhouMd
|
||||||
|
# fGq+R8IGMsy7mGxeHx67nzKIr6Rjd426YsGskp5D3gE9shvH8i3GOTBi2Y9JUnaU
|
||||||
|
# /KX+IMzKbvR0Y9echgTb17v3D/+fYzDD/kSGJcuQEIbJEyYsCDBF53xoKd6K0Pgz
|
||||||
|
# 2drucT9otwOLUgGfR1N6lRwDtkMHYB25OMIKLYtcfHjQZn+Howq/TVUbp9ohhW1N
|
||||||
|
# jim3nJfNvmRe2zN5476SOn86GzzrqxfAMCTtbZeim2ltOHxlnPUE8EJLdRFesKMK
|
||||||
|
# 6izgaxptlT+MO0R8jx1VoOn+qbQPbNn2GCOUvh/yFkjwDLtFb/rNdoWMNrSMZDhV
|
||||||
|
# mRCM17SwjW6qRmsrC7VSaSAgPsokYM0=
|
||||||
|
# SIG # End signature block
|
70
lab_5/vev/Scripts/activate
Normal file
70
lab_5/vev/Scripts/activate
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# This file must be used with "source bin/activate" *from bash*
|
||||||
|
# You cannot run it directly
|
||||||
|
|
||||||
|
deactivate () {
|
||||||
|
# reset old environment variables
|
||||||
|
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
|
||||||
|
PATH="${_OLD_VIRTUAL_PATH:-}"
|
||||||
|
export PATH
|
||||||
|
unset _OLD_VIRTUAL_PATH
|
||||||
|
fi
|
||||||
|
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
|
||||||
|
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
|
||||||
|
export PYTHONHOME
|
||||||
|
unset _OLD_VIRTUAL_PYTHONHOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Call hash to forget past commands. Without forgetting
|
||||||
|
# past commands the $PATH changes we made may not be respected
|
||||||
|
hash -r 2> /dev/null
|
||||||
|
|
||||||
|
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
|
||||||
|
PS1="${_OLD_VIRTUAL_PS1:-}"
|
||||||
|
export PS1
|
||||||
|
unset _OLD_VIRTUAL_PS1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset VIRTUAL_ENV
|
||||||
|
unset VIRTUAL_ENV_PROMPT
|
||||||
|
if [ ! "${1:-}" = "nondestructive" ] ; then
|
||||||
|
# Self destruct!
|
||||||
|
unset -f deactivate
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# unset irrelevant variables
|
||||||
|
deactivate nondestructive
|
||||||
|
|
||||||
|
# on Windows, a path can contain colons and backslashes and has to be converted:
|
||||||
|
if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then
|
||||||
|
# transform D:\path\to\venv to /d/path/to/venv on MSYS
|
||||||
|
# and to /cygdrive/d/path/to/venv on Cygwin
|
||||||
|
export VIRTUAL_ENV=$(cygpath "D:\code\mai\labs\AIM-PIbd-31-Bakalskaya-E-D\lab_5\vev")
|
||||||
|
else
|
||||||
|
# use the path as-is
|
||||||
|
export VIRTUAL_ENV="D:\code\mai\labs\AIM-PIbd-31-Bakalskaya-E-D\lab_5\vev"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_OLD_VIRTUAL_PATH="$PATH"
|
||||||
|
PATH="$VIRTUAL_ENV/Scripts:$PATH"
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
# unset PYTHONHOME if set
|
||||||
|
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
|
||||||
|
# could use `if (set -u; : $PYTHONHOME) ;` in bash
|
||||||
|
if [ -n "${PYTHONHOME:-}" ] ; then
|
||||||
|
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
|
||||||
|
unset PYTHONHOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
|
||||||
|
_OLD_VIRTUAL_PS1="${PS1:-}"
|
||||||
|
PS1="(vev) ${PS1:-}"
|
||||||
|
export PS1
|
||||||
|
VIRTUAL_ENV_PROMPT="(vev) "
|
||||||
|
export VIRTUAL_ENV_PROMPT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Call hash to forget past commands. Without forgetting
|
||||||
|
# past commands the $PATH changes we made may not be respected
|
||||||
|
hash -r 2> /dev/null
|
34
lab_5/vev/Scripts/activate.bat
Normal file
34
lab_5/vev/Scripts/activate.bat
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem This file is UTF-8 encoded, so we need to update the current code page while executing it
|
||||||
|
for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do (
|
||||||
|
set _OLD_CODEPAGE=%%a
|
||||||
|
)
|
||||||
|
if defined _OLD_CODEPAGE (
|
||||||
|
"%SystemRoot%\System32\chcp.com" 65001 > nul
|
||||||
|
)
|
||||||
|
|
||||||
|
set VIRTUAL_ENV=D:\code\mai\labs\AIM-PIbd-31-Bakalskaya-E-D\lab_5\vev
|
||||||
|
|
||||||
|
if not defined PROMPT set PROMPT=$P$G
|
||||||
|
|
||||||
|
if defined _OLD_VIRTUAL_PROMPT set PROMPT=%_OLD_VIRTUAL_PROMPT%
|
||||||
|
if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%
|
||||||
|
|
||||||
|
set _OLD_VIRTUAL_PROMPT=%PROMPT%
|
||||||
|
set PROMPT=(vev) %PROMPT%
|
||||||
|
|
||||||
|
if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%
|
||||||
|
set PYTHONHOME=
|
||||||
|
|
||||||
|
if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
|
||||||
|
if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH%
|
||||||
|
|
||||||
|
set PATH=%VIRTUAL_ENV%\Scripts;%PATH%
|
||||||
|
set VIRTUAL_ENV_PROMPT=(vev)
|
||||||
|
|
||||||
|
:END
|
||||||
|
if defined _OLD_CODEPAGE (
|
||||||
|
"%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul
|
||||||
|
set _OLD_CODEPAGE=
|
||||||
|
)
|
22
lab_5/vev/Scripts/deactivate.bat
Normal file
22
lab_5/vev/Scripts/deactivate.bat
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
if defined _OLD_VIRTUAL_PROMPT (
|
||||||
|
set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
|
||||||
|
)
|
||||||
|
set _OLD_VIRTUAL_PROMPT=
|
||||||
|
|
||||||
|
if defined _OLD_VIRTUAL_PYTHONHOME (
|
||||||
|
set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%"
|
||||||
|
set _OLD_VIRTUAL_PYTHONHOME=
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined _OLD_VIRTUAL_PATH (
|
||||||
|
set "PATH=%_OLD_VIRTUAL_PATH%"
|
||||||
|
)
|
||||||
|
|
||||||
|
set _OLD_VIRTUAL_PATH=
|
||||||
|
|
||||||
|
set VIRTUAL_ENV=
|
||||||
|
set VIRTUAL_ENV_PROMPT=
|
||||||
|
|
||||||
|
:END
|
BIN
lab_5/vev/Scripts/debugpy.exe
Normal file
BIN
lab_5/vev/Scripts/debugpy.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/f2py.exe
Normal file
BIN
lab_5/vev/Scripts/f2py.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/fonttools.exe
Normal file
BIN
lab_5/vev/Scripts/fonttools.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/huggingface-cli.exe
Normal file
BIN
lab_5/vev/Scripts/huggingface-cli.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/ipython.exe
Normal file
BIN
lab_5/vev/Scripts/ipython.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/ipython3.exe
Normal file
BIN
lab_5/vev/Scripts/ipython3.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/jupyter-kernel.exe
Normal file
BIN
lab_5/vev/Scripts/jupyter-kernel.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/jupyter-kernelspec.exe
Normal file
BIN
lab_5/vev/Scripts/jupyter-kernelspec.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/jupyter-migrate.exe
Normal file
BIN
lab_5/vev/Scripts/jupyter-migrate.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/jupyter-run.exe
Normal file
BIN
lab_5/vev/Scripts/jupyter-run.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/jupyter-troubleshoot.exe
Normal file
BIN
lab_5/vev/Scripts/jupyter-troubleshoot.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/jupyter.exe
Normal file
BIN
lab_5/vev/Scripts/jupyter.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/normalizer.exe
Normal file
BIN
lab_5/vev/Scripts/normalizer.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/numpy-config.exe
Normal file
BIN
lab_5/vev/Scripts/numpy-config.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pip.exe
Normal file
BIN
lab_5/vev/Scripts/pip.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pip3.12.exe
Normal file
BIN
lab_5/vev/Scripts/pip3.12.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pip3.exe
Normal file
BIN
lab_5/vev/Scripts/pip3.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pyftmerge.exe
Normal file
BIN
lab_5/vev/Scripts/pyftmerge.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pyftsubset.exe
Normal file
BIN
lab_5/vev/Scripts/pyftsubset.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pygmentize.exe
Normal file
BIN
lab_5/vev/Scripts/pygmentize.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/python.exe
Normal file
BIN
lab_5/vev/Scripts/python.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/pythonw.exe
Normal file
BIN
lab_5/vev/Scripts/pythonw.exe
Normal file
Binary file not shown.
783
lab_5/vev/Scripts/pywin32_postinstall.py
Normal file
783
lab_5/vev/Scripts/pywin32_postinstall.py
Normal file
@ -0,0 +1,783 @@
|
|||||||
|
# postinstall script for pywin32
|
||||||
|
#
|
||||||
|
# copies PyWinTypesxx.dll and PythonCOMxx.dll into the system directory,
|
||||||
|
# and creates a pth file
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import sysconfig
|
||||||
|
|
||||||
|
try:
|
||||||
|
import winreg as winreg
|
||||||
|
except:
|
||||||
|
import winreg
|
||||||
|
|
||||||
|
# Send output somewhere so it can be found if necessary...
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
tee_f = open(os.path.join(tempfile.gettempdir(), "pywin32_postinstall.log"), "w")
|
||||||
|
|
||||||
|
|
||||||
|
class Tee:
|
||||||
|
def __init__(self, file):
|
||||||
|
self.f = file
|
||||||
|
|
||||||
|
def write(self, what):
|
||||||
|
if self.f is not None:
|
||||||
|
try:
|
||||||
|
self.f.write(what.replace("\n", "\r\n"))
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
tee_f.write(what)
|
||||||
|
|
||||||
|
def flush(self):
|
||||||
|
if self.f is not None:
|
||||||
|
try:
|
||||||
|
self.f.flush()
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
tee_f.flush()
|
||||||
|
|
||||||
|
|
||||||
|
# For some unknown reason, when running under bdist_wininst we will start up
|
||||||
|
# with sys.stdout as None but stderr is hooked up. This work-around allows
|
||||||
|
# bdist_wininst to see the output we write and display it at the end of
|
||||||
|
# the install.
|
||||||
|
if sys.stdout is None:
|
||||||
|
sys.stdout = sys.stderr
|
||||||
|
|
||||||
|
sys.stderr = Tee(sys.stderr)
|
||||||
|
sys.stdout = Tee(sys.stdout)
|
||||||
|
|
||||||
|
com_modules = [
|
||||||
|
# module_name, class_names
|
||||||
|
("win32com.servers.interp", "Interpreter"),
|
||||||
|
("win32com.servers.dictionary", "DictionaryPolicy"),
|
||||||
|
("win32com.axscript.client.pyscript", "PyScript"),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Is this a 'silent' install - ie, avoid all dialogs.
|
||||||
|
# Different than 'verbose'
|
||||||
|
silent = 0
|
||||||
|
|
||||||
|
# Verbosity of output messages.
|
||||||
|
verbose = 1
|
||||||
|
|
||||||
|
root_key_name = "Software\\Python\\PythonCore\\" + sys.winver
|
||||||
|
|
||||||
|
try:
|
||||||
|
# When this script is run from inside the bdist_wininst installer,
|
||||||
|
# file_created() and directory_created() are additional builtin
|
||||||
|
# functions which write lines to Python23\pywin32-install.log. This is
|
||||||
|
# a list of actions for the uninstaller, the format is inspired by what
|
||||||
|
# the Wise installer also creates.
|
||||||
|
file_created
|
||||||
|
is_bdist_wininst = True
|
||||||
|
except NameError:
|
||||||
|
is_bdist_wininst = False # we know what it is not - but not what it is :)
|
||||||
|
|
||||||
|
def file_created(file):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def directory_created(directory):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_root_hkey():
|
||||||
|
try:
|
||||||
|
winreg.OpenKey(
|
||||||
|
winreg.HKEY_LOCAL_MACHINE, root_key_name, 0, winreg.KEY_CREATE_SUB_KEY
|
||||||
|
)
|
||||||
|
return winreg.HKEY_LOCAL_MACHINE
|
||||||
|
except OSError:
|
||||||
|
# Either not exist, or no permissions to create subkey means
|
||||||
|
# must be HKCU
|
||||||
|
return winreg.HKEY_CURRENT_USER
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
create_shortcut
|
||||||
|
except NameError:
|
||||||
|
# Create a function with the same signature as create_shortcut provided
|
||||||
|
# by bdist_wininst
|
||||||
|
def create_shortcut(
|
||||||
|
path, description, filename, arguments="", workdir="", iconpath="", iconindex=0
|
||||||
|
):
|
||||||
|
import pythoncom
|
||||||
|
from win32com.shell import shell
|
||||||
|
|
||||||
|
ilink = pythoncom.CoCreateInstance(
|
||||||
|
shell.CLSID_ShellLink,
|
||||||
|
None,
|
||||||
|
pythoncom.CLSCTX_INPROC_SERVER,
|
||||||
|
shell.IID_IShellLink,
|
||||||
|
)
|
||||||
|
ilink.SetPath(path)
|
||||||
|
ilink.SetDescription(description)
|
||||||
|
if arguments:
|
||||||
|
ilink.SetArguments(arguments)
|
||||||
|
if workdir:
|
||||||
|
ilink.SetWorkingDirectory(workdir)
|
||||||
|
if iconpath or iconindex:
|
||||||
|
ilink.SetIconLocation(iconpath, iconindex)
|
||||||
|
# now save it.
|
||||||
|
ipf = ilink.QueryInterface(pythoncom.IID_IPersistFile)
|
||||||
|
ipf.Save(filename, 0)
|
||||||
|
|
||||||
|
# Support the same list of "path names" as bdist_wininst.
|
||||||
|
def get_special_folder_path(path_name):
|
||||||
|
from win32com.shell import shell, shellcon
|
||||||
|
|
||||||
|
for maybe in """
|
||||||
|
CSIDL_COMMON_STARTMENU CSIDL_STARTMENU CSIDL_COMMON_APPDATA
|
||||||
|
CSIDL_LOCAL_APPDATA CSIDL_APPDATA CSIDL_COMMON_DESKTOPDIRECTORY
|
||||||
|
CSIDL_DESKTOPDIRECTORY CSIDL_COMMON_STARTUP CSIDL_STARTUP
|
||||||
|
CSIDL_COMMON_PROGRAMS CSIDL_PROGRAMS CSIDL_PROGRAM_FILES_COMMON
|
||||||
|
CSIDL_PROGRAM_FILES CSIDL_FONTS""".split():
|
||||||
|
if maybe == path_name:
|
||||||
|
csidl = getattr(shellcon, maybe)
|
||||||
|
return shell.SHGetSpecialFolderPath(0, csidl, False)
|
||||||
|
raise ValueError("%s is an unknown path ID" % (path_name,))
|
||||||
|
|
||||||
|
|
||||||
|
def CopyTo(desc, src, dest):
|
||||||
|
import win32api
|
||||||
|
import win32con
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
try:
|
||||||
|
win32api.CopyFile(src, dest, 0)
|
||||||
|
return
|
||||||
|
except win32api.error as details:
|
||||||
|
if details.winerror == 5: # access denied - user not admin.
|
||||||
|
raise
|
||||||
|
if silent:
|
||||||
|
# Running silent mode - just re-raise the error.
|
||||||
|
raise
|
||||||
|
full_desc = (
|
||||||
|
"Error %s\n\n"
|
||||||
|
"If you have any Python applications running, "
|
||||||
|
"please close them now\nand select 'Retry'\n\n%s"
|
||||||
|
% (desc, details.strerror)
|
||||||
|
)
|
||||||
|
rc = win32api.MessageBox(
|
||||||
|
0, full_desc, "Installation Error", win32con.MB_ABORTRETRYIGNORE
|
||||||
|
)
|
||||||
|
if rc == win32con.IDABORT:
|
||||||
|
raise
|
||||||
|
elif rc == win32con.IDIGNORE:
|
||||||
|
return
|
||||||
|
# else retry - around we go again.
|
||||||
|
|
||||||
|
|
||||||
|
# We need to import win32api to determine the Windows system directory,
|
||||||
|
# so we can copy our system files there - but importing win32api will
|
||||||
|
# load the pywintypes.dll already in the system directory preventing us
|
||||||
|
# from updating them!
|
||||||
|
# So, we pull the same trick pywintypes.py does, but it loads from
|
||||||
|
# our pywintypes_system32 directory.
|
||||||
|
def LoadSystemModule(lib_dir, modname):
|
||||||
|
# See if this is a debug build.
|
||||||
|
import importlib.machinery
|
||||||
|
import importlib.util
|
||||||
|
|
||||||
|
suffix = "_d" if "_d.pyd" in importlib.machinery.EXTENSION_SUFFIXES else ""
|
||||||
|
filename = "%s%d%d%s.dll" % (
|
||||||
|
modname,
|
||||||
|
sys.version_info[0],
|
||||||
|
sys.version_info[1],
|
||||||
|
suffix,
|
||||||
|
)
|
||||||
|
filename = os.path.join(lib_dir, "pywin32_system32", filename)
|
||||||
|
loader = importlib.machinery.ExtensionFileLoader(modname, filename)
|
||||||
|
spec = importlib.machinery.ModuleSpec(name=modname, loader=loader, origin=filename)
|
||||||
|
mod = importlib.util.module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(mod)
|
||||||
|
|
||||||
|
|
||||||
|
def SetPyKeyVal(key_name, value_name, value):
|
||||||
|
root_hkey = get_root_hkey()
|
||||||
|
root_key = winreg.OpenKey(root_hkey, root_key_name)
|
||||||
|
try:
|
||||||
|
my_key = winreg.CreateKey(root_key, key_name)
|
||||||
|
try:
|
||||||
|
winreg.SetValueEx(my_key, value_name, 0, winreg.REG_SZ, value)
|
||||||
|
if verbose:
|
||||||
|
print("-> %s\\%s[%s]=%r" % (root_key_name, key_name, value_name, value))
|
||||||
|
finally:
|
||||||
|
my_key.Close()
|
||||||
|
finally:
|
||||||
|
root_key.Close()
|
||||||
|
|
||||||
|
|
||||||
|
def UnsetPyKeyVal(key_name, value_name, delete_key=False):
|
||||||
|
root_hkey = get_root_hkey()
|
||||||
|
root_key = winreg.OpenKey(root_hkey, root_key_name)
|
||||||
|
try:
|
||||||
|
my_key = winreg.OpenKey(root_key, key_name, 0, winreg.KEY_SET_VALUE)
|
||||||
|
try:
|
||||||
|
winreg.DeleteValue(my_key, value_name)
|
||||||
|
if verbose:
|
||||||
|
print("-> DELETE %s\\%s[%s]" % (root_key_name, key_name, value_name))
|
||||||
|
finally:
|
||||||
|
my_key.Close()
|
||||||
|
if delete_key:
|
||||||
|
winreg.DeleteKey(root_key, key_name)
|
||||||
|
if verbose:
|
||||||
|
print("-> DELETE %s\\%s" % (root_key_name, key_name))
|
||||||
|
except OSError as why:
|
||||||
|
winerror = getattr(why, "winerror", why.errno)
|
||||||
|
if winerror != 2: # file not found
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
root_key.Close()
|
||||||
|
|
||||||
|
|
||||||
|
def RegisterCOMObjects(register=True):
|
||||||
|
import win32com.server.register
|
||||||
|
|
||||||
|
if register:
|
||||||
|
func = win32com.server.register.RegisterClasses
|
||||||
|
else:
|
||||||
|
func = win32com.server.register.UnregisterClasses
|
||||||
|
flags = {}
|
||||||
|
if not verbose:
|
||||||
|
flags["quiet"] = 1
|
||||||
|
for module, klass_name in com_modules:
|
||||||
|
__import__(module)
|
||||||
|
mod = sys.modules[module]
|
||||||
|
flags["finalize_register"] = getattr(mod, "DllRegisterServer", None)
|
||||||
|
flags["finalize_unregister"] = getattr(mod, "DllUnregisterServer", None)
|
||||||
|
klass = getattr(mod, klass_name)
|
||||||
|
func(klass, **flags)
|
||||||
|
|
||||||
|
|
||||||
|
def RegisterHelpFile(register=True, lib_dir=None):
|
||||||
|
if lib_dir is None:
|
||||||
|
lib_dir = sysconfig.get_paths()["platlib"]
|
||||||
|
if register:
|
||||||
|
# Register the .chm help file.
|
||||||
|
chm_file = os.path.join(lib_dir, "PyWin32.chm")
|
||||||
|
if os.path.isfile(chm_file):
|
||||||
|
# This isn't recursive, so if 'Help' doesn't exist, we croak
|
||||||
|
SetPyKeyVal("Help", None, None)
|
||||||
|
SetPyKeyVal("Help\\Pythonwin Reference", None, chm_file)
|
||||||
|
return chm_file
|
||||||
|
else:
|
||||||
|
print("NOTE: PyWin32.chm can not be located, so has not " "been registered")
|
||||||
|
else:
|
||||||
|
UnsetPyKeyVal("Help\\Pythonwin Reference", None, delete_key=True)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def RegisterPythonwin(register=True, lib_dir=None):
|
||||||
|
"""Add (or remove) Pythonwin to context menu for python scripts.
|
||||||
|
??? Should probably also add Edit command for pys files also.
|
||||||
|
Also need to remove these keys on uninstall, but there's no function
|
||||||
|
like file_created to add registry entries to uninstall log ???
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
|
||||||
|
if lib_dir is None:
|
||||||
|
lib_dir = sysconfig.get_paths()["platlib"]
|
||||||
|
classes_root = get_root_hkey()
|
||||||
|
## Installer executable doesn't seem to pass anything to postinstall script indicating if it's a debug build,
|
||||||
|
pythonwin_exe = os.path.join(lib_dir, "Pythonwin", "Pythonwin.exe")
|
||||||
|
pythonwin_edit_command = pythonwin_exe + ' -edit "%1"'
|
||||||
|
|
||||||
|
keys_vals = [
|
||||||
|
(
|
||||||
|
"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Pythonwin.exe",
|
||||||
|
"",
|
||||||
|
pythonwin_exe,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"Software\\Classes\\Python.File\\shell\\Edit with Pythonwin",
|
||||||
|
"command",
|
||||||
|
pythonwin_edit_command,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"Software\\Classes\\Python.NoConFile\\shell\\Edit with Pythonwin",
|
||||||
|
"command",
|
||||||
|
pythonwin_edit_command,
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
try:
|
||||||
|
if register:
|
||||||
|
for key, sub_key, val in keys_vals:
|
||||||
|
## Since winreg only uses the character Api functions, this can fail if Python
|
||||||
|
## is installed to a path containing non-ascii characters
|
||||||
|
hkey = winreg.CreateKey(classes_root, key)
|
||||||
|
if sub_key:
|
||||||
|
hkey = winreg.CreateKey(hkey, sub_key)
|
||||||
|
winreg.SetValueEx(hkey, None, 0, winreg.REG_SZ, val)
|
||||||
|
hkey.Close()
|
||||||
|
else:
|
||||||
|
for key, sub_key, val in keys_vals:
|
||||||
|
try:
|
||||||
|
if sub_key:
|
||||||
|
hkey = winreg.OpenKey(classes_root, key)
|
||||||
|
winreg.DeleteKey(hkey, sub_key)
|
||||||
|
hkey.Close()
|
||||||
|
winreg.DeleteKey(classes_root, key)
|
||||||
|
except OSError as why:
|
||||||
|
winerror = getattr(why, "winerror", why.errno)
|
||||||
|
if winerror != 2: # file not found
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
# tell windows about the change
|
||||||
|
from win32com.shell import shell, shellcon
|
||||||
|
|
||||||
|
shell.SHChangeNotify(
|
||||||
|
shellcon.SHCNE_ASSOCCHANGED, shellcon.SHCNF_IDLIST, None, None
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_shortcuts_folder():
|
||||||
|
if get_root_hkey() == winreg.HKEY_LOCAL_MACHINE:
|
||||||
|
try:
|
||||||
|
fldr = get_special_folder_path("CSIDL_COMMON_PROGRAMS")
|
||||||
|
except OSError:
|
||||||
|
# No CSIDL_COMMON_PROGRAMS on this platform
|
||||||
|
fldr = get_special_folder_path("CSIDL_PROGRAMS")
|
||||||
|
else:
|
||||||
|
# non-admin install - always goes in this user's start menu.
|
||||||
|
fldr = get_special_folder_path("CSIDL_PROGRAMS")
|
||||||
|
|
||||||
|
try:
|
||||||
|
install_group = winreg.QueryValue(
|
||||||
|
get_root_hkey(), root_key_name + "\\InstallPath\\InstallGroup"
|
||||||
|
)
|
||||||
|
except OSError:
|
||||||
|
vi = sys.version_info
|
||||||
|
install_group = "Python %d.%d" % (vi[0], vi[1])
|
||||||
|
return os.path.join(fldr, install_group)
|
||||||
|
|
||||||
|
|
||||||
|
# Get the system directory, which may be the Wow64 directory if we are a 32bit
|
||||||
|
# python on a 64bit OS.
|
||||||
|
def get_system_dir():
|
||||||
|
import win32api # we assume this exists.
|
||||||
|
|
||||||
|
try:
|
||||||
|
import pythoncom
|
||||||
|
import win32process
|
||||||
|
from win32com.shell import shell, shellcon
|
||||||
|
|
||||||
|
try:
|
||||||
|
if win32process.IsWow64Process():
|
||||||
|
return shell.SHGetSpecialFolderPath(0, shellcon.CSIDL_SYSTEMX86)
|
||||||
|
return shell.SHGetSpecialFolderPath(0, shellcon.CSIDL_SYSTEM)
|
||||||
|
except (pythoncom.com_error, win32process.error):
|
||||||
|
return win32api.GetSystemDirectory()
|
||||||
|
except ImportError:
|
||||||
|
return win32api.GetSystemDirectory()
|
||||||
|
|
||||||
|
|
||||||
|
def fixup_dbi():
|
||||||
|
# We used to have a dbi.pyd with our .pyd files, but now have a .py file.
|
||||||
|
# If the user didn't uninstall, they will find the .pyd which will cause
|
||||||
|
# problems - so handle that.
|
||||||
|
import win32api
|
||||||
|
import win32con
|
||||||
|
|
||||||
|
pyd_name = os.path.join(os.path.dirname(win32api.__file__), "dbi.pyd")
|
||||||
|
pyd_d_name = os.path.join(os.path.dirname(win32api.__file__), "dbi_d.pyd")
|
||||||
|
py_name = os.path.join(os.path.dirname(win32con.__file__), "dbi.py")
|
||||||
|
for this_pyd in (pyd_name, pyd_d_name):
|
||||||
|
this_dest = this_pyd + ".old"
|
||||||
|
if os.path.isfile(this_pyd) and os.path.isfile(py_name):
|
||||||
|
try:
|
||||||
|
if os.path.isfile(this_dest):
|
||||||
|
print(
|
||||||
|
"Old dbi '%s' already exists - deleting '%s'"
|
||||||
|
% (this_dest, this_pyd)
|
||||||
|
)
|
||||||
|
os.remove(this_pyd)
|
||||||
|
else:
|
||||||
|
os.rename(this_pyd, this_dest)
|
||||||
|
print("renamed '%s'->'%s.old'" % (this_pyd, this_pyd))
|
||||||
|
file_created(this_pyd + ".old")
|
||||||
|
except os.error as exc:
|
||||||
|
print("FAILED to rename '%s': %s" % (this_pyd, exc))
|
||||||
|
|
||||||
|
|
||||||
|
def install(lib_dir):
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
# The .pth file is now installed as a regular file.
|
||||||
|
# Create the .pth file in the site-packages dir, and use only relative paths
|
||||||
|
# We used to write a .pth directly to sys.prefix - clobber it.
|
||||||
|
if os.path.isfile(os.path.join(sys.prefix, "pywin32.pth")):
|
||||||
|
os.unlink(os.path.join(sys.prefix, "pywin32.pth"))
|
||||||
|
# The .pth may be new and therefore not loaded in this session.
|
||||||
|
# Setup the paths just in case.
|
||||||
|
for name in "win32 win32\\lib Pythonwin".split():
|
||||||
|
sys.path.append(os.path.join(lib_dir, name))
|
||||||
|
# It is possible people with old versions installed with still have
|
||||||
|
# pywintypes and pythoncom registered. We no longer need this, and stale
|
||||||
|
# entries hurt us.
|
||||||
|
for name in "pythoncom pywintypes".split():
|
||||||
|
keyname = "Software\\Python\\PythonCore\\" + sys.winver + "\\Modules\\" + name
|
||||||
|
for root in winreg.HKEY_LOCAL_MACHINE, winreg.HKEY_CURRENT_USER:
|
||||||
|
try:
|
||||||
|
winreg.DeleteKey(root, keyname + "\\Debug")
|
||||||
|
except WindowsError:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
winreg.DeleteKey(root, keyname)
|
||||||
|
except WindowsError:
|
||||||
|
pass
|
||||||
|
LoadSystemModule(lib_dir, "pywintypes")
|
||||||
|
LoadSystemModule(lib_dir, "pythoncom")
|
||||||
|
import win32api
|
||||||
|
|
||||||
|
# and now we can get the system directory:
|
||||||
|
files = glob.glob(os.path.join(lib_dir, "pywin32_system32\\*.*"))
|
||||||
|
if not files:
|
||||||
|
raise RuntimeError("No system files to copy!!")
|
||||||
|
# Try the system32 directory first - if that fails due to "access denied",
|
||||||
|
# it implies a non-admin user, and we use sys.prefix
|
||||||
|
for dest_dir in [get_system_dir(), sys.prefix]:
|
||||||
|
# and copy some files over there
|
||||||
|
worked = 0
|
||||||
|
try:
|
||||||
|
for fname in files:
|
||||||
|
base = os.path.basename(fname)
|
||||||
|
dst = os.path.join(dest_dir, base)
|
||||||
|
CopyTo("installing %s" % base, fname, dst)
|
||||||
|
if verbose:
|
||||||
|
print("Copied %s to %s" % (base, dst))
|
||||||
|
# Register the files with the uninstaller
|
||||||
|
file_created(dst)
|
||||||
|
worked = 1
|
||||||
|
# Nuke any other versions that may exist - having
|
||||||
|
# duplicates causes major headaches.
|
||||||
|
bad_dest_dirs = [
|
||||||
|
os.path.join(sys.prefix, "Library\\bin"),
|
||||||
|
os.path.join(sys.prefix, "Lib\\site-packages\\win32"),
|
||||||
|
]
|
||||||
|
if dest_dir != sys.prefix:
|
||||||
|
bad_dest_dirs.append(sys.prefix)
|
||||||
|
for bad_dest_dir in bad_dest_dirs:
|
||||||
|
bad_fname = os.path.join(bad_dest_dir, base)
|
||||||
|
if os.path.exists(bad_fname):
|
||||||
|
# let exceptions go here - delete must succeed
|
||||||
|
os.unlink(bad_fname)
|
||||||
|
if worked:
|
||||||
|
break
|
||||||
|
except win32api.error as details:
|
||||||
|
if details.winerror == 5:
|
||||||
|
# access denied - user not admin - try sys.prefix dir,
|
||||||
|
# but first check that a version doesn't already exist
|
||||||
|
# in that place - otherwise that one will still get used!
|
||||||
|
if os.path.exists(dst):
|
||||||
|
msg = (
|
||||||
|
"The file '%s' exists, but can not be replaced "
|
||||||
|
"due to insufficient permissions. You must "
|
||||||
|
"reinstall this software as an Administrator" % dst
|
||||||
|
)
|
||||||
|
print(msg)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
continue
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
raise RuntimeError(
|
||||||
|
"You don't have enough permissions to install the system files"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Pythonwin 'compiles' config files - record them for uninstall.
|
||||||
|
pywin_dir = os.path.join(lib_dir, "Pythonwin", "pywin")
|
||||||
|
for fname in glob.glob(os.path.join(pywin_dir, "*.cfg")):
|
||||||
|
file_created(fname[:-1] + "c") # .cfg->.cfc
|
||||||
|
|
||||||
|
# Register our demo COM objects.
|
||||||
|
try:
|
||||||
|
try:
|
||||||
|
RegisterCOMObjects()
|
||||||
|
except win32api.error as details:
|
||||||
|
if details.winerror != 5: # ERROR_ACCESS_DENIED
|
||||||
|
raise
|
||||||
|
print("You do not have the permissions to install COM objects.")
|
||||||
|
print("The sample COM objects were not registered.")
|
||||||
|
except Exception:
|
||||||
|
print("FAILED to register the Python COM objects")
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
|
# There may be no main Python key in HKCU if, eg, an admin installed
|
||||||
|
# python itself.
|
||||||
|
winreg.CreateKey(get_root_hkey(), root_key_name)
|
||||||
|
|
||||||
|
chm_file = None
|
||||||
|
try:
|
||||||
|
chm_file = RegisterHelpFile(True, lib_dir)
|
||||||
|
except Exception:
|
||||||
|
print("Failed to register help file")
|
||||||
|
traceback.print_exc()
|
||||||
|
else:
|
||||||
|
if verbose:
|
||||||
|
print("Registered help file")
|
||||||
|
|
||||||
|
# misc other fixups.
|
||||||
|
fixup_dbi()
|
||||||
|
|
||||||
|
# Register Pythonwin in context menu
|
||||||
|
try:
|
||||||
|
RegisterPythonwin(True, lib_dir)
|
||||||
|
except Exception:
|
||||||
|
print("Failed to register pythonwin as editor")
|
||||||
|
traceback.print_exc()
|
||||||
|
else:
|
||||||
|
if verbose:
|
||||||
|
print("Pythonwin has been registered in context menu")
|
||||||
|
|
||||||
|
# Create the win32com\gen_py directory.
|
||||||
|
make_dir = os.path.join(lib_dir, "win32com", "gen_py")
|
||||||
|
if not os.path.isdir(make_dir):
|
||||||
|
if verbose:
|
||||||
|
print("Creating directory %s" % (make_dir,))
|
||||||
|
directory_created(make_dir)
|
||||||
|
os.mkdir(make_dir)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# create shortcuts
|
||||||
|
# CSIDL_COMMON_PROGRAMS only available works on NT/2000/XP, and
|
||||||
|
# will fail there if the user has no admin rights.
|
||||||
|
fldr = get_shortcuts_folder()
|
||||||
|
# If the group doesn't exist, then we don't make shortcuts - its
|
||||||
|
# possible that this isn't a "normal" install.
|
||||||
|
if os.path.isdir(fldr):
|
||||||
|
dst = os.path.join(fldr, "PythonWin.lnk")
|
||||||
|
create_shortcut(
|
||||||
|
os.path.join(lib_dir, "Pythonwin\\Pythonwin.exe"),
|
||||||
|
"The Pythonwin IDE",
|
||||||
|
dst,
|
||||||
|
"",
|
||||||
|
sys.prefix,
|
||||||
|
)
|
||||||
|
file_created(dst)
|
||||||
|
if verbose:
|
||||||
|
print("Shortcut for Pythonwin created")
|
||||||
|
# And the docs.
|
||||||
|
if chm_file:
|
||||||
|
dst = os.path.join(fldr, "Python for Windows Documentation.lnk")
|
||||||
|
doc = "Documentation for the PyWin32 extensions"
|
||||||
|
create_shortcut(chm_file, doc, dst)
|
||||||
|
file_created(dst)
|
||||||
|
if verbose:
|
||||||
|
print("Shortcut to documentation created")
|
||||||
|
else:
|
||||||
|
if verbose:
|
||||||
|
print("Can't install shortcuts - %r is not a folder" % (fldr,))
|
||||||
|
except Exception as details:
|
||||||
|
print(details)
|
||||||
|
|
||||||
|
# importing win32com.client ensures the gen_py dir created - not strictly
|
||||||
|
# necessary to do now, but this makes the installation "complete"
|
||||||
|
try:
|
||||||
|
import win32com.client # noqa
|
||||||
|
except ImportError:
|
||||||
|
# Don't let this error sound fatal
|
||||||
|
pass
|
||||||
|
print("The pywin32 extensions were successfully installed.")
|
||||||
|
|
||||||
|
if is_bdist_wininst:
|
||||||
|
# Open a web page with info about the .exe installers being deprecated.
|
||||||
|
import webbrowser
|
||||||
|
|
||||||
|
try:
|
||||||
|
webbrowser.open("https://mhammond.github.io/pywin32_installers.html")
|
||||||
|
except webbrowser.Error:
|
||||||
|
print("Please visit https://mhammond.github.io/pywin32_installers.html")
|
||||||
|
|
||||||
|
|
||||||
|
def uninstall(lib_dir):
|
||||||
|
# First ensure our system modules are loaded from pywin32_system, so
|
||||||
|
# we can remove the ones we copied...
|
||||||
|
LoadSystemModule(lib_dir, "pywintypes")
|
||||||
|
LoadSystemModule(lib_dir, "pythoncom")
|
||||||
|
|
||||||
|
try:
|
||||||
|
RegisterCOMObjects(False)
|
||||||
|
except Exception as why:
|
||||||
|
print("Failed to unregister COM objects: %s" % (why,))
|
||||||
|
|
||||||
|
try:
|
||||||
|
RegisterHelpFile(False, lib_dir)
|
||||||
|
except Exception as why:
|
||||||
|
print("Failed to unregister help file: %s" % (why,))
|
||||||
|
else:
|
||||||
|
if verbose:
|
||||||
|
print("Unregistered help file")
|
||||||
|
|
||||||
|
try:
|
||||||
|
RegisterPythonwin(False, lib_dir)
|
||||||
|
except Exception as why:
|
||||||
|
print("Failed to unregister Pythonwin: %s" % (why,))
|
||||||
|
else:
|
||||||
|
if verbose:
|
||||||
|
print("Unregistered Pythonwin")
|
||||||
|
|
||||||
|
try:
|
||||||
|
# remove gen_py directory.
|
||||||
|
gen_dir = os.path.join(lib_dir, "win32com", "gen_py")
|
||||||
|
if os.path.isdir(gen_dir):
|
||||||
|
shutil.rmtree(gen_dir)
|
||||||
|
if verbose:
|
||||||
|
print("Removed directory %s" % (gen_dir,))
|
||||||
|
|
||||||
|
# Remove pythonwin compiled "config" files.
|
||||||
|
pywin_dir = os.path.join(lib_dir, "Pythonwin", "pywin")
|
||||||
|
for fname in glob.glob(os.path.join(pywin_dir, "*.cfc")):
|
||||||
|
os.remove(fname)
|
||||||
|
|
||||||
|
# The dbi.pyd.old files we may have created.
|
||||||
|
try:
|
||||||
|
os.remove(os.path.join(lib_dir, "win32", "dbi.pyd.old"))
|
||||||
|
except os.error:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
os.remove(os.path.join(lib_dir, "win32", "dbi_d.pyd.old"))
|
||||||
|
except os.error:
|
||||||
|
pass
|
||||||
|
|
||||||
|
except Exception as why:
|
||||||
|
print("Failed to remove misc files: %s" % (why,))
|
||||||
|
|
||||||
|
try:
|
||||||
|
fldr = get_shortcuts_folder()
|
||||||
|
for link in ("PythonWin.lnk", "Python for Windows Documentation.lnk"):
|
||||||
|
fqlink = os.path.join(fldr, link)
|
||||||
|
if os.path.isfile(fqlink):
|
||||||
|
os.remove(fqlink)
|
||||||
|
if verbose:
|
||||||
|
print("Removed %s" % (link,))
|
||||||
|
except Exception as why:
|
||||||
|
print("Failed to remove shortcuts: %s" % (why,))
|
||||||
|
# Now remove the system32 files.
|
||||||
|
files = glob.glob(os.path.join(lib_dir, "pywin32_system32\\*.*"))
|
||||||
|
# Try the system32 directory first - if that fails due to "access denied",
|
||||||
|
# it implies a non-admin user, and we use sys.prefix
|
||||||
|
try:
|
||||||
|
for dest_dir in [get_system_dir(), sys.prefix]:
|
||||||
|
# and copy some files over there
|
||||||
|
worked = 0
|
||||||
|
for fname in files:
|
||||||
|
base = os.path.basename(fname)
|
||||||
|
dst = os.path.join(dest_dir, base)
|
||||||
|
if os.path.isfile(dst):
|
||||||
|
try:
|
||||||
|
os.remove(dst)
|
||||||
|
worked = 1
|
||||||
|
if verbose:
|
||||||
|
print("Removed file %s" % (dst))
|
||||||
|
except Exception:
|
||||||
|
print("FAILED to remove %s" % (dst,))
|
||||||
|
if worked:
|
||||||
|
break
|
||||||
|
except Exception as why:
|
||||||
|
print("FAILED to remove system files: %s" % (why,))
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE: If this script is run from inside the bdist_wininst created
|
||||||
|
# binary installer or uninstaller, the command line args are either
|
||||||
|
# '-install' or '-remove'.
|
||||||
|
|
||||||
|
# Important: From inside the binary installer this script MUST NOT
|
||||||
|
# call sys.exit() or raise SystemExit, otherwise not only this script
|
||||||
|
# but also the installer will terminate! (Is there a way to prevent
|
||||||
|
# this from the bdist_wininst C code?)
|
||||||
|
|
||||||
|
|
||||||
|
def verify_destination(location):
|
||||||
|
if not os.path.isdir(location):
|
||||||
|
raise argparse.ArgumentTypeError('Path "{}" does not exist!'.format(location))
|
||||||
|
return location
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
|
description="""A post-install script for the pywin32 extensions.
|
||||||
|
|
||||||
|
* Typical usage:
|
||||||
|
|
||||||
|
> python pywin32_postinstall.py -install
|
||||||
|
|
||||||
|
If you installed pywin32 via a .exe installer, this should be run
|
||||||
|
automatically after installation, but if it fails you can run it again.
|
||||||
|
|
||||||
|
If you installed pywin32 via PIP, you almost certainly need to run this to
|
||||||
|
setup the environment correctly.
|
||||||
|
|
||||||
|
Execute with script with a '-install' parameter, to ensure the environment
|
||||||
|
is setup correctly.
|
||||||
|
""",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-install",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Configure the Python environment correctly for pywin32.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-remove",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Try and remove everything that was installed or copied.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-wait",
|
||||||
|
type=int,
|
||||||
|
help="Wait for the specified process to terminate before starting.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-silent",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help='Don\'t display the "Abort/Retry/Ignore" dialog for files in use.',
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-quiet",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Don't display progress messages.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-destination",
|
||||||
|
default=sysconfig.get_paths()["platlib"],
|
||||||
|
type=verify_destination,
|
||||||
|
help="Location of the PyWin32 installation",
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if not args.quiet:
|
||||||
|
print("Parsed arguments are: {}".format(args))
|
||||||
|
|
||||||
|
if not args.install ^ args.remove:
|
||||||
|
parser.error("You need to either choose to -install or -remove!")
|
||||||
|
|
||||||
|
if args.wait is not None:
|
||||||
|
try:
|
||||||
|
os.waitpid(args.wait, 0)
|
||||||
|
except os.error:
|
||||||
|
# child already dead
|
||||||
|
pass
|
||||||
|
|
||||||
|
silent = args.silent
|
||||||
|
verbose = not args.quiet
|
||||||
|
|
||||||
|
if args.install:
|
||||||
|
install(args.destination)
|
||||||
|
|
||||||
|
if args.remove:
|
||||||
|
if not is_bdist_wininst:
|
||||||
|
uninstall(args.destination)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
124
lab_5/vev/Scripts/pywin32_testall.py
Normal file
124
lab_5/vev/Scripts/pywin32_testall.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
"""A test runner for pywin32"""
|
||||||
|
import os
|
||||||
|
import site
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# locate the dirs based on where this script is - it may be either in the
|
||||||
|
# source tree, or in an installed Python 'Scripts' tree.
|
||||||
|
this_dir = os.path.dirname(__file__)
|
||||||
|
site_packages = [
|
||||||
|
site.getusersitepackages(),
|
||||||
|
] + site.getsitepackages()
|
||||||
|
|
||||||
|
failures = []
|
||||||
|
|
||||||
|
|
||||||
|
# Run a test using subprocess and wait for the result.
|
||||||
|
# If we get an returncode != 0, we know that there was an error, but we don't
|
||||||
|
# abort immediately - we run as many tests as we can.
|
||||||
|
def run_test(script, cmdline_extras):
|
||||||
|
dirname, scriptname = os.path.split(script)
|
||||||
|
# some tests prefer to be run from their directory.
|
||||||
|
cmd = [sys.executable, "-u", scriptname] + cmdline_extras
|
||||||
|
print("--- Running '%s' ---" % script)
|
||||||
|
sys.stdout.flush()
|
||||||
|
result = subprocess.run(cmd, check=False, cwd=dirname)
|
||||||
|
print("*** Test script '%s' exited with %s" % (script, result.returncode))
|
||||||
|
sys.stdout.flush()
|
||||||
|
if result.returncode:
|
||||||
|
failures.append(script)
|
||||||
|
|
||||||
|
|
||||||
|
def find_and_run(possible_locations, extras):
|
||||||
|
for maybe in possible_locations:
|
||||||
|
if os.path.isfile(maybe):
|
||||||
|
run_test(maybe, extras)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise RuntimeError(
|
||||||
|
"Failed to locate a test script in one of %s" % possible_locations
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
code_directories = [this_dir] + site_packages
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="A script to trigger tests in all subprojects of PyWin32."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-no-user-interaction",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="(This is now the default - use `-user-interaction` to include them)",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-user-interaction",
|
||||||
|
action="store_true",
|
||||||
|
help="Include tests which require user interaction",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-skip-adodbapi",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Skip the adodbapi tests; useful for CI where there's no provider",
|
||||||
|
)
|
||||||
|
|
||||||
|
args, remains = parser.parse_known_args()
|
||||||
|
|
||||||
|
# win32, win32ui / Pythonwin
|
||||||
|
|
||||||
|
extras = []
|
||||||
|
if args.user_interaction:
|
||||||
|
extras += ["-user-interaction"]
|
||||||
|
extras.extend(remains)
|
||||||
|
scripts = [
|
||||||
|
"win32/test/testall.py",
|
||||||
|
"Pythonwin/pywin/test/all.py",
|
||||||
|
]
|
||||||
|
for script in scripts:
|
||||||
|
maybes = [os.path.join(directory, script) for directory in code_directories]
|
||||||
|
find_and_run(maybes, extras)
|
||||||
|
|
||||||
|
# win32com
|
||||||
|
maybes = [
|
||||||
|
os.path.join(directory, "win32com", "test", "testall.py")
|
||||||
|
for directory in [
|
||||||
|
os.path.join(this_dir, "com"),
|
||||||
|
]
|
||||||
|
+ site_packages
|
||||||
|
]
|
||||||
|
extras = remains + ["1"] # only run "level 1" tests in CI
|
||||||
|
find_and_run(maybes, extras)
|
||||||
|
|
||||||
|
# adodbapi
|
||||||
|
if not args.skip_adodbapi:
|
||||||
|
maybes = [
|
||||||
|
os.path.join(directory, "adodbapi", "test", "adodbapitest.py")
|
||||||
|
for directory in code_directories
|
||||||
|
]
|
||||||
|
find_and_run(maybes, remains)
|
||||||
|
# This script has a hard-coded sql server name in it, (and markh typically
|
||||||
|
# doesn't have a different server to test on) but there is now supposed to be a server out there on the Internet
|
||||||
|
# just to run these tests, so try it...
|
||||||
|
maybes = [
|
||||||
|
os.path.join(directory, "adodbapi", "test", "test_adodbapi_dbapi20.py")
|
||||||
|
for directory in code_directories
|
||||||
|
]
|
||||||
|
find_and_run(maybes, remains)
|
||||||
|
|
||||||
|
if failures:
|
||||||
|
print("The following scripts failed")
|
||||||
|
for failure in failures:
|
||||||
|
print(">", failure)
|
||||||
|
sys.exit(1)
|
||||||
|
print("All tests passed \\o/")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
BIN
lab_5/vev/Scripts/tqdm.exe
Normal file
BIN
lab_5/vev/Scripts/tqdm.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/transformers-cli.exe
Normal file
BIN
lab_5/vev/Scripts/transformers-cli.exe
Normal file
Binary file not shown.
BIN
lab_5/vev/Scripts/ttx.exe
Normal file
BIN
lab_5/vev/Scripts/ttx.exe
Normal file
Binary file not shown.
5
lab_5/vev/pyvenv.cfg
Normal file
5
lab_5/vev/pyvenv.cfg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
home = C:\Users\elena\AppData\Local\Programs\Python\Python312
|
||||||
|
include-system-site-packages = false
|
||||||
|
version = 3.12.6
|
||||||
|
executable = C:\Users\elena\AppData\Local\Programs\Python\Python312\python.exe
|
||||||
|
command = C:\Users\elena\AppData\Local\Programs\Python\Python312\python.exe -m venv D:\code\mai\labs\AIM-PIbd-31-Bakalskaya-E-D\lab_5\vev
|
14
lab_5/vev/share/jupyter/kernels/python3/kernel.json
Normal file
14
lab_5/vev/share/jupyter/kernels/python3/kernel.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"argv": [
|
||||||
|
"python",
|
||||||
|
"-m",
|
||||||
|
"ipykernel_launcher",
|
||||||
|
"-f",
|
||||||
|
"{connection_file}"
|
||||||
|
],
|
||||||
|
"display_name": "Python 3 (ipykernel)",
|
||||||
|
"language": "python",
|
||||||
|
"metadata": {
|
||||||
|
"debugger": true
|
||||||
|
}
|
||||||
|
}
|
BIN
lab_5/vev/share/jupyter/kernels/python3/logo-32x32.png
Normal file
BIN
lab_5/vev/share/jupyter/kernels/python3/logo-32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
lab_5/vev/share/jupyter/kernels/python3/logo-64x64.png
Normal file
BIN
lab_5/vev/share/jupyter/kernels/python3/logo-64x64.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
265
lab_5/vev/share/jupyter/kernels/python3/logo-svg.svg
Normal file
265
lab_5/vev/share/jupyter/kernels/python3/logo-svg.svg
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.0"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
||||||
|
sodipodi:docname="python-logo-only.svg"
|
||||||
|
width="83.371017pt"
|
||||||
|
height="101.00108pt"
|
||||||
|
inkscape:export-filename="python-logo-only.png"
|
||||||
|
inkscape:export-xdpi="232.44"
|
||||||
|
inkscape:export-ydpi="232.44"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata
|
||||||
|
id="metadata371">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<sodipodi:namedview
|
||||||
|
inkscape:window-height="2080"
|
||||||
|
inkscape:window-width="1976"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
guidetolerance="10.0"
|
||||||
|
gridtolerance="10.0"
|
||||||
|
objecttolerance="10.0"
|
||||||
|
borderopacity="1.0"
|
||||||
|
bordercolor="#666666"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
id="base"
|
||||||
|
inkscape:zoom="2.1461642"
|
||||||
|
inkscape:cx="91.558698"
|
||||||
|
inkscape:cy="47.9926"
|
||||||
|
inkscape:window-x="1092"
|
||||||
|
inkscape:window-y="72"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
width="210mm"
|
||||||
|
height="40mm"
|
||||||
|
units="mm"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="pt"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2795">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#b8b8b8;stop-opacity:0.49803922;"
|
||||||
|
offset="0"
|
||||||
|
id="stop2797" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7f7f7f;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop2799" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2787">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7f7f7f;stop-opacity:0.5;"
|
||||||
|
offset="0"
|
||||||
|
id="stop2789" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7f7f7f;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop2791" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3676">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#b2b2b2;stop-opacity:0.5;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3678" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#b3b3b3;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3680" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3236">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#f4f4f4;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop3244" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="1"
|
||||||
|
id="stop3240" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4671">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffd43b;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop4673" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffe873;stop-opacity:1"
|
||||||
|
offset="1"
|
||||||
|
id="stop4675" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4689">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#5a9fd4;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop4691" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#306998;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop4693" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="224.23996"
|
||||||
|
y1="144.75717"
|
||||||
|
x2="-65.308502"
|
||||||
|
y2="144.75717"
|
||||||
|
id="linearGradient2987"
|
||||||
|
xlink:href="#linearGradient4671"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(100.2702,99.61116)" />
|
||||||
|
<linearGradient
|
||||||
|
x1="172.94208"
|
||||||
|
y1="77.475983"
|
||||||
|
x2="26.670298"
|
||||||
|
y2="76.313133"
|
||||||
|
id="linearGradient2990"
|
||||||
|
xlink:href="#linearGradient4689"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(100.2702,99.61116)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4689"
|
||||||
|
id="linearGradient2587"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(100.2702,99.61116)"
|
||||||
|
x1="172.94208"
|
||||||
|
y1="77.475983"
|
||||||
|
x2="26.670298"
|
||||||
|
y2="76.313133" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4671"
|
||||||
|
id="linearGradient2589"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(100.2702,99.61116)"
|
||||||
|
x1="224.23996"
|
||||||
|
y1="144.75717"
|
||||||
|
x2="-65.308502"
|
||||||
|
y2="144.75717" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4689"
|
||||||
|
id="linearGradient2248"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(100.2702,99.61116)"
|
||||||
|
x1="172.94208"
|
||||||
|
y1="77.475983"
|
||||||
|
x2="26.670298"
|
||||||
|
y2="76.313133" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4671"
|
||||||
|
id="linearGradient2250"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(100.2702,99.61116)"
|
||||||
|
x1="224.23996"
|
||||||
|
y1="144.75717"
|
||||||
|
x2="-65.308502"
|
||||||
|
y2="144.75717" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4671"
|
||||||
|
id="linearGradient2255"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)"
|
||||||
|
x1="224.23996"
|
||||||
|
y1="144.75717"
|
||||||
|
x2="-65.308502"
|
||||||
|
y2="144.75717" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4689"
|
||||||
|
id="linearGradient2258"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)"
|
||||||
|
x1="172.94208"
|
||||||
|
y1="76.176224"
|
||||||
|
x2="26.670298"
|
||||||
|
y2="76.313133" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2795"
|
||||||
|
id="radialGradient2801"
|
||||||
|
cx="61.518883"
|
||||||
|
cy="132.28575"
|
||||||
|
fx="61.518883"
|
||||||
|
fy="132.28575"
|
||||||
|
r="29.036913"
|
||||||
|
gradientTransform="matrix(1,0,0,0.177966,0,108.7434)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4671"
|
||||||
|
id="linearGradient1475"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.562541,0,0,0.567972,-14.99112,-11.702371)"
|
||||||
|
x1="150.96111"
|
||||||
|
y1="192.35176"
|
||||||
|
x2="112.03144"
|
||||||
|
y2="137.27299" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4689"
|
||||||
|
id="linearGradient1478"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.562541,0,0,0.567972,-14.99112,-11.702371)"
|
||||||
|
x1="26.648937"
|
||||||
|
y1="20.603781"
|
||||||
|
x2="135.66525"
|
||||||
|
y2="114.39767" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2795"
|
||||||
|
id="radialGradient1480"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.7490565e-8,-0.23994696,1.054668,3.7915457e-7,-83.7008,142.46201)"
|
||||||
|
cx="61.518883"
|
||||||
|
cy="132.28575"
|
||||||
|
fx="61.518883"
|
||||||
|
fy="132.28575"
|
||||||
|
r="29.036913" />
|
||||||
|
</defs>
|
||||||
|
<path
|
||||||
|
style="fill:url(#linearGradient1478);fill-opacity:1"
|
||||||
|
d="M 54.918785,9.1927421e-4 C 50.335132,0.02221727 45.957846,0.41313697 42.106285,1.0946693 30.760069,3.0991731 28.700036,7.2947714 28.700035,15.032169 v 10.21875 h 26.8125 v 3.40625 h -26.8125 -10.0625 c -7.792459,0 -14.6157588,4.683717 -16.7499998,13.59375 -2.46181998,10.212966 -2.57101508,16.586023 0,27.25 1.9059283,7.937852 6.4575432,13.593748 14.2499998,13.59375 h 9.21875 v -12.25 c 0,-8.849902 7.657144,-16.656248 16.75,-16.65625 h 26.78125 c 7.454951,0 13.406253,-6.138164 13.40625,-13.625 v -25.53125 c 0,-7.2663386 -6.12998,-12.7247771 -13.40625,-13.9374997 C 64.281548,0.32794397 59.502438,-0.02037903 54.918785,9.1927421e-4 Z m -14.5,8.21875012579 c 2.769547,0 5.03125,2.2986456 5.03125,5.1249996 -2e-6,2.816336 -2.261703,5.09375 -5.03125,5.09375 -2.779476,-1e-6 -5.03125,-2.277415 -5.03125,-5.09375 -10e-7,-2.826353 2.251774,-5.1249996 5.03125,-5.1249996 z"
|
||||||
|
id="path1948" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#linearGradient1475);fill-opacity:1"
|
||||||
|
d="m 85.637535,28.657169 v 11.90625 c 0,9.230755 -7.825895,16.999999 -16.75,17 h -26.78125 c -7.335833,0 -13.406249,6.278483 -13.40625,13.625 v 25.531247 c 0,7.266344 6.318588,11.540324 13.40625,13.625004 8.487331,2.49561 16.626237,2.94663 26.78125,0 6.750155,-1.95439 13.406253,-5.88761 13.40625,-13.625004 V 86.500919 h -26.78125 v -3.40625 h 26.78125 13.406254 c 7.792461,0 10.696251,-5.435408 13.406241,-13.59375 2.79933,-8.398886 2.68022,-16.475776 0,-27.25 -1.92578,-7.757441 -5.60387,-13.59375 -13.406241,-13.59375 z m -15.0625,64.65625 c 2.779478,3e-6 5.03125,2.277417 5.03125,5.093747 -2e-6,2.826354 -2.251775,5.125004 -5.03125,5.125004 -2.76955,0 -5.03125,-2.29865 -5.03125,-5.125004 2e-6,-2.81633 2.261697,-5.093747 5.03125,-5.093747 z"
|
||||||
|
id="path1950" />
|
||||||
|
<ellipse
|
||||||
|
style="opacity:0.44382;fill:url(#radialGradient1480);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.4174;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path1894"
|
||||||
|
cx="55.816761"
|
||||||
|
cy="127.70079"
|
||||||
|
rx="35.930977"
|
||||||
|
ry="6.9673119" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 9.4 KiB |
60
lab_5/vev/share/man/man1/ipython.1
Normal file
60
lab_5/vev/share/man/man1/ipython.1
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" First parameter, NAME, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.TH IPYTHON 1 "July 15, 2011"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7) and groff_man(7)
|
||||||
|
.\" .SH section heading
|
||||||
|
.\" .SS secondary section heading
|
||||||
|
.\"
|
||||||
|
.\"
|
||||||
|
.\" To preview this page as plain text: nroff -man ipython.1
|
||||||
|
.\"
|
||||||
|
.SH NAME
|
||||||
|
ipython \- Tools for Interactive Computing in Python.
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B ipython
|
||||||
|
.RI [ options ] " files" ...
|
||||||
|
|
||||||
|
.B ipython subcommand
|
||||||
|
.RI [ options ] ...
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
An interactive Python shell with automatic history (input and output), dynamic
|
||||||
|
object introspection, easier configuration, command completion, access to the
|
||||||
|
system shell, integration with numerical and scientific computing tools,
|
||||||
|
web notebook, Qt console, and more.
|
||||||
|
|
||||||
|
For more information on how to use IPython, see 'ipython \-\-help',
|
||||||
|
or 'ipython \-\-help\-all' for all available command\(hyline options.
|
||||||
|
|
||||||
|
.SH "ENVIRONMENT VARIABLES"
|
||||||
|
.sp
|
||||||
|
.PP
|
||||||
|
\fIIPYTHONDIR\fR
|
||||||
|
.RS 4
|
||||||
|
This is the location where IPython stores all its configuration files. The default
|
||||||
|
is $HOME/.ipython if IPYTHONDIR is not defined.
|
||||||
|
|
||||||
|
You can see the computed value of IPYTHONDIR with `ipython locate`.
|
||||||
|
|
||||||
|
.SH FILES
|
||||||
|
|
||||||
|
IPython uses various configuration files stored in profiles within IPYTHONDIR.
|
||||||
|
To generate the default configuration files and start configuring IPython,
|
||||||
|
do 'ipython profile create', and edit '*_config.py' files located in
|
||||||
|
IPYTHONDIR/profile_default.
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
IPython is written by the IPython Development Team <https://github.com/ipython/ipython>.
|
225
lab_5/vev/share/man/man1/ttx.1
Normal file
225
lab_5/vev/share/man/man1/ttx.1
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
.Dd May 18, 2004
|
||||||
|
.\" ttx is not specific to any OS, but contrary to what groff_mdoc(7)
|
||||||
|
.\" seems to imply, entirely omitting the .Os macro causes 'BSD' to
|
||||||
|
.\" be used, so I give a zero-width space as its argument.
|
||||||
|
.Os \&
|
||||||
|
.\" The "FontTools Manual" argument apparently has no effect in
|
||||||
|
.\" groff 1.18.1. I think it is a bug in the -mdoc groff package.
|
||||||
|
.Dt TTX 1 "FontTools Manual"
|
||||||
|
.Sh NAME
|
||||||
|
.Nm ttx
|
||||||
|
.Nd tool for manipulating TrueType and OpenType fonts
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm
|
||||||
|
.Bk
|
||||||
|
.Op Ar option ...
|
||||||
|
.Ek
|
||||||
|
.Bk
|
||||||
|
.Ar file ...
|
||||||
|
.Ek
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Nm
|
||||||
|
is a tool for manipulating TrueType and OpenType fonts. It can convert
|
||||||
|
TrueType and OpenType fonts to and from an
|
||||||
|
.Tn XML Ns -based format called
|
||||||
|
.Tn TTX .
|
||||||
|
.Tn TTX
|
||||||
|
files have a
|
||||||
|
.Ql .ttx
|
||||||
|
extension.
|
||||||
|
.Pp
|
||||||
|
For each
|
||||||
|
.Ar file
|
||||||
|
argument it is given,
|
||||||
|
.Nm
|
||||||
|
detects whether it is a
|
||||||
|
.Ql .ttf ,
|
||||||
|
.Ql .otf
|
||||||
|
or
|
||||||
|
.Ql .ttx
|
||||||
|
file and acts accordingly: if it is a
|
||||||
|
.Ql .ttf
|
||||||
|
or
|
||||||
|
.Ql .otf
|
||||||
|
file, it generates a
|
||||||
|
.Ql .ttx
|
||||||
|
file; if it is a
|
||||||
|
.Ql .ttx
|
||||||
|
file, it generates a
|
||||||
|
.Ql .ttf
|
||||||
|
or
|
||||||
|
.Ql .otf
|
||||||
|
file.
|
||||||
|
.Pp
|
||||||
|
By default, every output file is created in the same directory as the
|
||||||
|
corresponding input file and with the same name except for the
|
||||||
|
extension, which is substituted appropriately.
|
||||||
|
.Nm
|
||||||
|
never overwrites existing files; if necessary, it appends a suffix to
|
||||||
|
the output file name before the extension, as in
|
||||||
|
.Pa Arial#1.ttf .
|
||||||
|
.Ss "General options"
|
||||||
|
.Bl -tag -width ".Fl t Ar table"
|
||||||
|
.It Fl h
|
||||||
|
Display usage information.
|
||||||
|
.It Fl d Ar dir
|
||||||
|
Write the output files to directory
|
||||||
|
.Ar dir
|
||||||
|
instead of writing every output file to the same directory as the
|
||||||
|
corresponding input file.
|
||||||
|
.It Fl o Ar file
|
||||||
|
Write the output to
|
||||||
|
.Ar file
|
||||||
|
instead of writing it to the same directory as the
|
||||||
|
corresponding input file.
|
||||||
|
.It Fl v
|
||||||
|
Be verbose. Write more messages to the standard output describing what
|
||||||
|
is being done.
|
||||||
|
.It Fl a
|
||||||
|
Allow virtual glyphs ID's on compile or decompile.
|
||||||
|
.El
|
||||||
|
.Ss "Dump options"
|
||||||
|
The following options control the process of dumping font files
|
||||||
|
(TrueType or OpenType) to
|
||||||
|
.Tn TTX
|
||||||
|
files.
|
||||||
|
.Bl -tag -width ".Fl t Ar table"
|
||||||
|
.It Fl l
|
||||||
|
List table information. Instead of dumping the font to a
|
||||||
|
.Tn TTX
|
||||||
|
file, display minimal information about each table.
|
||||||
|
.It Fl t Ar table
|
||||||
|
Dump table
|
||||||
|
.Ar table .
|
||||||
|
This option may be given multiple times to dump several tables at
|
||||||
|
once. When not specified, all tables are dumped.
|
||||||
|
.It Fl x Ar table
|
||||||
|
Exclude table
|
||||||
|
.Ar table
|
||||||
|
from the list of tables to dump. This option may be given multiple
|
||||||
|
times to exclude several tables from the dump. The
|
||||||
|
.Fl t
|
||||||
|
and
|
||||||
|
.Fl x
|
||||||
|
options are mutually exclusive.
|
||||||
|
.It Fl s
|
||||||
|
Split tables. Dump each table to a separate
|
||||||
|
.Tn TTX
|
||||||
|
file and write (under the name that would have been used for the output
|
||||||
|
file if the
|
||||||
|
.Fl s
|
||||||
|
option had not been given) one small
|
||||||
|
.Tn TTX
|
||||||
|
file containing references to the individual table dump files. This
|
||||||
|
file can be used as input to
|
||||||
|
.Nm
|
||||||
|
as long as the referenced files can be found in the same directory.
|
||||||
|
.It Fl i
|
||||||
|
.\" XXX: I suppose OpenType programs (exist and) are also affected.
|
||||||
|
Don't disassemble TrueType instructions. When this option is specified,
|
||||||
|
all TrueType programs (glyph programs, the font program and the
|
||||||
|
pre-program) are written to the
|
||||||
|
.Tn TTX
|
||||||
|
file as hexadecimal data instead of
|
||||||
|
assembly. This saves some time and results in smaller
|
||||||
|
.Tn TTX
|
||||||
|
files.
|
||||||
|
.It Fl y Ar n
|
||||||
|
When decompiling a TrueType Collection (TTC) file,
|
||||||
|
decompile font number
|
||||||
|
.Ar n ,
|
||||||
|
starting from 0.
|
||||||
|
.El
|
||||||
|
.Ss "Compilation options"
|
||||||
|
The following options control the process of compiling
|
||||||
|
.Tn TTX
|
||||||
|
files into font files (TrueType or OpenType):
|
||||||
|
.Bl -tag -width ".Fl t Ar table"
|
||||||
|
.It Fl m Ar fontfile
|
||||||
|
Merge the input
|
||||||
|
.Tn TTX
|
||||||
|
file
|
||||||
|
.Ar file
|
||||||
|
with
|
||||||
|
.Ar fontfile .
|
||||||
|
No more than one
|
||||||
|
.Ar file
|
||||||
|
argument can be specified when this option is used.
|
||||||
|
.It Fl b
|
||||||
|
Don't recalculate glyph bounding boxes. Use the values in the
|
||||||
|
.Tn TTX
|
||||||
|
file as is.
|
||||||
|
.El
|
||||||
|
.Sh "THE TTX FILE FORMAT"
|
||||||
|
You can find some information about the
|
||||||
|
.Tn TTX
|
||||||
|
file format in
|
||||||
|
.Pa documentation.html .
|
||||||
|
In particular, you will find in that file the list of tables understood by
|
||||||
|
.Nm
|
||||||
|
and the relations between TrueType GlyphIDs and the glyph names used in
|
||||||
|
.Tn TTX
|
||||||
|
files.
|
||||||
|
.Sh EXAMPLES
|
||||||
|
In the following examples, all files are read from and written to the
|
||||||
|
current directory. Additionally, the name given for the output file
|
||||||
|
assumes in every case that it did not exist before
|
||||||
|
.Nm
|
||||||
|
was invoked.
|
||||||
|
.Pp
|
||||||
|
Dump the TrueType font contained in
|
||||||
|
.Pa FreeSans.ttf
|
||||||
|
to
|
||||||
|
.Pa FreeSans.ttx :
|
||||||
|
.Pp
|
||||||
|
.Dl ttx FreeSans.ttf
|
||||||
|
.Pp
|
||||||
|
Compile
|
||||||
|
.Pa MyFont.ttx
|
||||||
|
into a TrueType or OpenType font file:
|
||||||
|
.Pp
|
||||||
|
.Dl ttx MyFont.ttx
|
||||||
|
.Pp
|
||||||
|
List the tables in
|
||||||
|
.Pa FreeSans.ttf
|
||||||
|
along with some information:
|
||||||
|
.Pp
|
||||||
|
.Dl ttx -l FreeSans.ttf
|
||||||
|
.Pp
|
||||||
|
Dump the
|
||||||
|
.Sq cmap
|
||||||
|
table from
|
||||||
|
.Pa FreeSans.ttf
|
||||||
|
to
|
||||||
|
.Pa FreeSans.ttx :
|
||||||
|
.Pp
|
||||||
|
.Dl ttx -t cmap FreeSans.ttf
|
||||||
|
.Sh NOTES
|
||||||
|
On MS\-Windows and MacOS,
|
||||||
|
.Nm
|
||||||
|
is available as a graphical application to which files can be dropped.
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Pa documentation.html
|
||||||
|
.Pp
|
||||||
|
.Xr fontforge 1 ,
|
||||||
|
.Xr ftinfo 1 ,
|
||||||
|
.Xr gfontview 1 ,
|
||||||
|
.Xr xmbdfed 1 ,
|
||||||
|
.Xr Font::TTF 3pm
|
||||||
|
.Sh AUTHORS
|
||||||
|
.Nm
|
||||||
|
was written by
|
||||||
|
.An -nosplit
|
||||||
|
.An "Just van Rossum" Aq just@letterror.com .
|
||||||
|
.Pp
|
||||||
|
This manual page was written by
|
||||||
|
.An "Florent Rougon" Aq f.rougon@free.fr
|
||||||
|
for the Debian GNU/Linux system based on the existing FontTools
|
||||||
|
documentation. It may be freely used, modified and distributed without
|
||||||
|
restrictions.
|
||||||
|
.\" For Emacs:
|
||||||
|
.\" Local Variables:
|
||||||
|
.\" fill-column: 72
|
||||||
|
.\" sentence-end: "[.?!][]\"')}]*\\($\\| $\\| \\| \\)[ \n]*"
|
||||||
|
.\" sentence-end-double-space: t
|
||||||
|
.\" End:
|
Loading…
x
Reference in New Issue
Block a user