Skip to content

Commit d78b3fa

Browse files
committed
Update to pyeffect 1.0.5 and update example for Future.traverse
1 parent aa28e3f commit d78b3fa

3 files changed

Lines changed: 25 additions & 29 deletions

File tree

‎functional-python.ipynb‎

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@
268268
"name": "stdout",
269269
"output_type": "stream",
270270
"text": [
271-
"Requirement already satisfied: pyeffects in /home/vic/anaconda3/lib/python3.9/site-packages (1.0.4)\r\n"
271+
"Requirement already satisfied: pyeffects in /home/vic/anaconda3/lib/python3.9/site-packages (1.0.5)\r\n"
272272
]
273273
}
274274
],
@@ -554,14 +554,14 @@
554554
"traceback": [
555555
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
556556
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
557-
"\u001b[0;32m/tmp/ipykernel_21885/2680335701.py\u001b[0m in \u001b[0;36mparse_name\u001b[0;34m(name_dict)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mName\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mname_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
557+
"\u001b[0;32m/tmp/ipykernel_1818/2680335701.py\u001b[0m in \u001b[0;36mparse_name\u001b[0;34m(name_dict)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mName\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mname_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
558558
"\u001b[0;31mTypeError\u001b[0m: __init__() got an unexpected keyword argument 'first_name_is_wrong'",
559559
"\nDuring handling of the above exception, another exception occurred:\n",
560560
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
561-
"\u001b[0;32m/tmp/ipykernel_21885/1474534612.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mperson2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_person\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mperson2_str\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
562-
"\u001b[0;32m/tmp/ipykernel_21885/2680335701.py\u001b[0m in \u001b[0;36mparse_person\u001b[0;34m(json_str)\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattributes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'name'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'contact1'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mattributes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mcontact1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_contact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattributes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'contact1'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'contact1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'contact2'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mattributes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mcontact2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_contact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattributes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'contact2'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'contact2'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
563-
"\u001b[0;32m/tmp/ipykernel_21885/2680335701.py\u001b[0m in \u001b[0;36mparse_contact\u001b[0;34m(contact_dict, relationship)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'name'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcontact_dict\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontact_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'name'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mContact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrelationship\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrelationship\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
564-
"\u001b[0;32m/tmp/ipykernel_21885/2680335701.py\u001b[0m in \u001b[0;36mparse_name\u001b[0;34m(name_dict)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mte\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Couldn't deserialize Name: \"\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mte\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mparse_contact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontact_dict\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrelationship\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mContact\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
561+
"\u001b[0;32m/tmp/ipykernel_1818/1474534612.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mperson2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_person\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mperson2_str\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
562+
"\u001b[0;32m/tmp/ipykernel_1818/2680335701.py\u001b[0m in \u001b[0;36mparse_person\u001b[0;34m(json_str)\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattributes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'name'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'contact1'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mattributes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mcontact1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_contact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattributes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'contact1'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'contact1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'contact2'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mattributes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mcontact2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_contact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattributes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'contact2'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'contact2'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
563+
"\u001b[0;32m/tmp/ipykernel_1818/2680335701.py\u001b[0m in \u001b[0;36mparse_contact\u001b[0;34m(contact_dict, relationship)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'name'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcontact_dict\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontact_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'name'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mContact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrelationship\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrelationship\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
564+
"\u001b[0;32m/tmp/ipykernel_1818/2680335701.py\u001b[0m in \u001b[0;36mparse_name\u001b[0;34m(name_dict)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mte\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Couldn't deserialize Name: \"\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mte\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mparse_contact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontact_dict\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrelationship\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mContact\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
565565
"\u001b[0;31mTypeError\u001b[0m: Couldn't deserialize Name: __init__() got an unexpected keyword argument 'first_name_is_wrong'"
566566
]
567567
}
@@ -673,7 +673,7 @@
673673
"Done: False\n",
674674
"Done: True\n",
675675
"Result: 101\n",
676-
"Execution time: 4.007782459259033 s\n"
676+
"Execution time: 4.003849029541016 s\n"
677677
]
678678
}
679679
],
@@ -720,7 +720,7 @@
720720
"output_type": "stream",
721721
"text": [
722722
"Result: 150\n",
723-
"Execution time: 5.005568742752075 s\n"
723+
"Execution time: 5.007669448852539 s\n"
724724
]
725725
}
726726
],
@@ -772,7 +772,7 @@
772772
"text": [
773773
"Unable to compute result due to exception\n",
774774
"Error getting result\n",
775-
"Execution time: 3.0046818256378174 s\n"
775+
"Execution time: 3.003845453262329 s\n"
776776
]
777777
}
778778
],
@@ -815,7 +815,7 @@
815815
},
816816
{
817817
"cell_type": "code",
818-
"execution_count": 20,
818+
"execution_count": 18,
819819
"metadata": {
820820
"slideshow": {
821821
"slide_type": "fragment"
@@ -827,13 +827,11 @@
827827
"output_type": "stream",
828828
"text": [
829829
"Result: 150\n",
830-
"Execution time: 5.008533477783203 s\n"
830+
"Execution time: 5.003130674362183 s\n"
831831
]
832832
}
833833
],
834834
"source": [
835-
"from pyeffects.Monad import identity\n",
836-
"\n",
837835
"def delayed_result1() -> List[int]:\n",
838836
" time.sleep(3)\n",
839837
" return 100\n",
@@ -852,7 +850,7 @@
852850
"result2 = Future.run(delayed_result2)\n",
853851
"\n",
854852
"# Convert List[Future[int]] -> Future[List[int]] \n",
855-
"Future.traverse([result1, result2])(identity)\\\n",
853+
"Future.traverse([result1, result2])\\\n",
856854
" .on_complete(lambda v: handle_result(v.get(), start_time))"
857855
]
858856
},

‎functional-python.pdf‎

-302 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)