Skip to content
This repository was archived by the owner on Feb 12, 2025. It is now read-only.

Commit 1030be2

Browse files
committed
fixed bug for exceptions
1 parent 1a0d8ae commit 1030be2

File tree

2 files changed

+79
-62
lines changed

2 files changed

+79
-62
lines changed

Demo.ipynb

Lines changed: 67 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,12 @@
4242
" src=\"https://www.youtube-nocookie.com/embed/qcnmi6PgrKg\"\n",
4343
" frameborder=\"0\"\n",
4444
" allowfullscreen\n",
45+
" \n",
4546
" ></iframe>\n",
4647
" "
4748
],
4849
"text/plain": [
49-
"<IPython.lib.display.IFrame at 0x10405ffd0>"
50+
"<IPython.lib.display.IFrame at 0x112d27250>"
5051
]
5152
},
5253
"execution_count": 1,
@@ -91,20 +92,36 @@
9192
"output_type": "stream",
9293
"text": [
9394
"Processing /Users/marius/Desktop/work/projects/sflkit\n",
94-
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
95-
"\u001b[?25hRequirement already satisfied: astor in /Users/marius/.pyenv/versions/3.10.4/lib/python3.10/site-packages (from sflkit==0.0.1) (0.8.1)\n",
96-
"Requirement already satisfied: numpy in /Users/marius/.pyenv/versions/3.10.4/lib/python3.10/site-packages (from sflkit==0.0.1) (1.21.4)\n",
95+
" Installing build dependencies ... \u001b[?25ldone\n",
96+
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
97+
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
98+
"\u001b[?25hRequirement already satisfied: sflkitlib>=0.0.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (0.0.1)\n",
99+
"Requirement already satisfied: astor>=0.8.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (0.8.1)\n",
100+
"Requirement already satisfied: numpy==1.25.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (1.25.1)\n",
101+
"Requirement already satisfied: matplotlib==3.7.2 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (3.7.2)\n",
102+
"Requirement already satisfied: sortedcollections>=2.1.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (2.1.0)\n",
103+
"Requirement already satisfied: parameterized>=0.8.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (0.9.0)\n",
104+
"Requirement already satisfied: contourpy>=1.0.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (1.1.0)\n",
105+
"Requirement already satisfied: cycler>=0.10 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (0.11.0)\n",
106+
"Requirement already satisfied: fonttools>=4.22.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (4.40.0)\n",
107+
"Requirement already satisfied: kiwisolver>=1.0.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (1.4.4)\n",
108+
"Requirement already satisfied: packaging>=20.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (23.1)\n",
109+
"Requirement already satisfied: pillow>=6.2.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (9.5.0)\n",
110+
"Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (2.4.7)\n",
111+
"Requirement already satisfied: python-dateutil>=2.7 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (2.8.2)\n",
112+
"Requirement already satisfied: sortedcontainers in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sortedcollections>=2.1.0->sflkit==0.2.6) (2.4.0)\n",
113+
"Requirement already satisfied: six>=1.5 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib==3.7.2->sflkit==0.2.6) (1.16.0)\n",
97114
"Building wheels for collected packages: sflkit\n",
98-
" Building wheel for sflkit (setup.py) ... \u001b[?25ldone\n",
99-
"\u001b[?25h Created wheel for sflkit: filename=sflkit-0.0.1-py3-none-any.whl size=36849 sha256=d7f1eb74bf255ce6931a3cf46b9a96d1b4a0115e9a6a1007ba04db8886cd5326\n",
100-
" Stored in directory: /private/var/folders/09/pt1hglws43n7fh5521n6zyyh0000gn/T/pip-ephem-wheel-cache-w99ak0ft/wheels/17/26/2b/95e39722d6155ccf3490ca6319b00bd6c3f0644a3cffeed02e\n",
115+
" Building wheel for sflkit (pyproject.toml) ... \u001b[?25ldone\n",
116+
"\u001b[?25h Created wheel for sflkit: filename=sflkit-0.2.6-py3-none-any.whl size=39297 sha256=aa8c1331ed527c0a89c0632b24b0ba146eab95760564d41188ef489542d5f516\n",
117+
" Stored in directory: /private/var/folders/09/pt1hglws43n7fh5521n6zyyh0000gn/T/pip-ephem-wheel-cache-1d3qc8oo/wheels/eb/95/8a/7bf6ee4d50417cf8e084552e4c6c5c1932d1e96f61309af921\n",
101118
"Successfully built sflkit\n",
102119
"Installing collected packages: sflkit\n",
103120
" Attempting uninstall: sflkit\n",
104-
" Found existing installation: sflkit 0.0.1\n",
105-
" Uninstalling sflkit-0.0.1:\n",
106-
" Successfully uninstalled sflkit-0.0.1\n",
107-
"Successfully installed sflkit-0.0.1\n"
121+
" Found existing installation: sflkit 0.2.6\n",
122+
" Uninstalling sflkit-0.2.6:\n",
123+
" Successfully uninstalled sflkit-0.2.6\n",
124+
"Successfully installed sflkit-0.2.6\n"
108125
]
109126
}
110127
],
@@ -651,13 +668,13 @@
651668
},
652669
{
653670
"cell_type": "code",
654-
"execution_count": 16,
671+
"execution_count": 19,
655672
"id": "b0cd0637-7b4a-4736-80a3-6211b7e529c9",
656673
"metadata": {},
657674
"outputs": [],
658675
"source": [
659676
"def get_config():\n",
660-
" return Config.config(path=middle_py, working=tmp_py, language=language, predicates=predicates, metrics=metrics, passing=passing, failing=failing)"
677+
" return Config.create(path=middle_py, working=tmp_py, language=language, predicates=predicates, metrics=metrics, passing=passing, failing=failing)"
661678
]
662679
},
663680
{
@@ -670,7 +687,7 @@
670687
},
671688
{
672689
"cell_type": "code",
673-
"execution_count": 17,
690+
"execution_count": 20,
674691
"id": "d0a87958-fbf9-4ad8-91c5-c4f9526ebcc5",
675692
"metadata": {},
676693
"outputs": [],
@@ -692,42 +709,42 @@
692709
},
693710
{
694711
"cell_type": "code",
695-
"execution_count": 18,
712+
"execution_count": 21,
696713
"id": "c19129e7-cf49-4028-8997-76afeafc9324",
697714
"metadata": {},
698715
"outputs": [
699716
{
700717
"name": "stdout",
701718
"output_type": "stream",
702719
"text": [
703-
"import sflkit.instrumentation.lib\n",
720+
"import sflkitlib.lib\n",
704721
"\n",
705722
"\n",
706723
"def middle(x, y, z):\n",
707-
" sflkit.instrumentation.lib.add_line_event('middle.py', 2, 0)\n",
724+
" sflkitlib.lib.add_line_event('middle.py', 2, 0)\n",
708725
" m = z\n",
709-
" sflkit.instrumentation.lib.add_line_event('middle.py', 3, 1)\n",
726+
" sflkitlib.lib.add_line_event('middle.py', 3, 1)\n",
710727
" if y < z:\n",
711-
" sflkit.instrumentation.lib.add_line_event('middle.py', 4, 2)\n",
728+
" sflkitlib.lib.add_line_event('middle.py', 4, 2)\n",
712729
" if x < y:\n",
713-
" sflkit.instrumentation.lib.add_line_event('middle.py', 5, 3)\n",
730+
" sflkitlib.lib.add_line_event('middle.py', 5, 3)\n",
714731
" m = y\n",
715732
" else:\n",
716-
" sflkit.instrumentation.lib.add_line_event('middle.py', 6, 4)\n",
733+
" sflkitlib.lib.add_line_event('middle.py', 6, 4)\n",
717734
" if x < z:\n",
718-
" sflkit.instrumentation.lib.add_line_event('middle.py', 7, 5)\n",
735+
" sflkitlib.lib.add_line_event('middle.py', 7, 5)\n",
719736
" m = y\n",
720737
" else:\n",
721-
" sflkit.instrumentation.lib.add_line_event('middle.py', 9, 6)\n",
738+
" sflkitlib.lib.add_line_event('middle.py', 9, 6)\n",
722739
" if x > y:\n",
723-
" sflkit.instrumentation.lib.add_line_event('middle.py', 10, 7)\n",
740+
" sflkitlib.lib.add_line_event('middle.py', 10, 7)\n",
724741
" m = y\n",
725742
" else:\n",
726-
" sflkit.instrumentation.lib.add_line_event('middle.py', 11, 8)\n",
743+
" sflkitlib.lib.add_line_event('middle.py', 11, 8)\n",
727744
" if x > z:\n",
728-
" sflkit.instrumentation.lib.add_line_event('middle.py', 12, 9)\n",
745+
" sflkitlib.lib.add_line_event('middle.py', 12, 9)\n",
729746
" m = x\n",
730-
" sflkit.instrumentation.lib.add_line_event('middle.py', 13, 10)\n",
747+
" sflkitlib.lib.add_line_event('middle.py', 13, 10)\n",
731748
" return m\n",
732749
"\n"
733750
]
@@ -763,19 +780,19 @@
763780
},
764781
{
765782
"cell_type": "code",
766-
"execution_count": 19,
783+
"execution_count": 32,
767784
"id": "a5daf879-9158-402f-8b5f-bab67f4736da",
768785
"metadata": {},
769786
"outputs": [],
770787
"source": [
771788
"def test_tmp(x, y, z, expected): \n",
772789
" import tmp\n",
773790
" importlib.reload(tmp)\n",
774-
" tmp.sflkit.instrumentation.lib.reset()\n",
791+
" tmp.sflkitlib.lib.reset()\n",
775792
" try:\n",
776793
" return test(tmp.middle, x, y, z, expected)\n",
777794
" finally:\n",
778-
" tmp.sflkit.instrumentation.lib.dump_events()\n",
795+
" tmp.sflkitlib.lib.dump_events()\n",
779796
" del tmp"
780797
]
781798
},
@@ -789,7 +806,7 @@
789806
},
790807
{
791808
"cell_type": "code",
792-
"execution_count": 20,
809+
"execution_count": 33,
793810
"id": "823303be-b13f-4405-9186-857625aec1b1",
794811
"metadata": {},
795812
"outputs": [],
@@ -807,7 +824,7 @@
807824
},
808825
{
809826
"cell_type": "code",
810-
"execution_count": 21,
827+
"execution_count": 34,
811828
"id": "e084ac5b-b15e-47d0-8cda-4dc14adbb2e9",
812829
"metadata": {},
813830
"outputs": [],
@@ -834,7 +851,7 @@
834851
},
835852
{
836853
"cell_type": "code",
837-
"execution_count": 22,
854+
"execution_count": 35,
838855
"id": "d922df2e-39a9-4aea-a926-b9275bdd9197",
839856
"metadata": {},
840857
"outputs": [],
@@ -854,7 +871,7 @@
854871
},
855872
{
856873
"cell_type": "code",
857-
"execution_count": 23,
874+
"execution_count": 36,
858875
"id": "f52db0b7-4423-49a2-b79c-3bff82e9f084",
859876
"metadata": {},
860877
"outputs": [],
@@ -872,24 +889,20 @@
872889
},
873890
{
874891
"cell_type": "code",
875-
"execution_count": 24,
892+
"execution_count": 37,
876893
"id": "cd538827-c2b6-45fe-a3bf-1bae6e213223",
877894
"metadata": {},
878895
"outputs": [
879896
{
880897
"data": {
881898
"text/plain": [
882899
"{'LINE': {'Tarantula': [[middle.py:7]:1.0,\n",
883-
" [middle.py:4]:0.6666666666666666,\n",
884-
" [middle.py:6]:0.6666666666666666,\n",
885-
" [middle.py:13]:0.5,\n",
886-
" [middle.py:2]:0.5,\n",
887-
" [middle.py:3]:0.5,\n",
888-
" [middle.py:9]:0.0,\n",
889-
" [middle.py:10]:0.0]}}"
900+
" [middle.py:4, middle.py:6]:0.6666666666666666,\n",
901+
" [middle.py:3, middle.py:13, middle.py:2]:0.5,\n",
902+
" [middle.py:9, middle.py:10]:0.0]}}"
890903
]
891904
},
892-
"execution_count": 24,
905+
"execution_count": 37,
893906
"metadata": {},
894907
"output_type": "execute_result"
895908
}
@@ -916,7 +929,7 @@
916929
},
917930
{
918931
"cell_type": "code",
919-
"execution_count": 25,
932+
"execution_count": 38,
920933
"id": "d2e2b4ed-5c28-45c9-bb12-bd746e7bc966",
921934
"metadata": {},
922935
"outputs": [],
@@ -930,7 +943,7 @@
930943
},
931944
{
932945
"cell_type": "code",
933-
"execution_count": 26,
946+
"execution_count": 39,
934947
"id": "a7a490d9-7622-4e46-968e-aeb0d7b368b0",
935948
"metadata": {},
936949
"outputs": [
@@ -965,7 +978,7 @@
965978
"<IPython.core.display.HTML object>"
966979
]
967980
},
968-
"execution_count": 26,
981+
"execution_count": 39,
969982
"metadata": {},
970983
"output_type": "execute_result"
971984
}
@@ -1010,7 +1023,7 @@
10101023
},
10111024
{
10121025
"cell_type": "code",
1013-
"execution_count": 27,
1026+
"execution_count": 40,
10141027
"id": "bf3f66c0-1131-4017-bbd2-a4d68eec4c22",
10151028
"metadata": {},
10161029
"outputs": [
@@ -1046,7 +1059,7 @@
10461059
"<IPython.core.display.HTML object>"
10471060
]
10481061
},
1049-
"execution_count": 27,
1062+
"execution_count": 40,
10501063
"metadata": {},
10511064
"output_type": "execute_result"
10521065
}
@@ -1082,7 +1095,7 @@
10821095
},
10831096
{
10841097
"cell_type": "code",
1085-
"execution_count": 28,
1098+
"execution_count": 41,
10861099
"id": "416d8d9f-2636-4e79-8dd4-83d5c3a3e68f",
10871100
"metadata": {},
10881101
"outputs": [
@@ -1118,7 +1131,7 @@
11181131
"<IPython.core.display.HTML object>"
11191132
]
11201133
},
1121-
"execution_count": 28,
1134+
"execution_count": 41,
11221135
"metadata": {},
11231136
"output_type": "execute_result"
11241137
}
@@ -1154,7 +1167,7 @@
11541167
},
11551168
{
11561169
"cell_type": "code",
1157-
"execution_count": 29,
1170+
"execution_count": 42,
11581171
"id": "0c9dcfc0-98db-4151-a0bd-44862985a3b4",
11591172
"metadata": {},
11601173
"outputs": [
@@ -1190,7 +1203,7 @@
11901203
"<IPython.core.display.HTML object>"
11911204
]
11921205
},
1193-
"execution_count": 29,
1206+
"execution_count": 42,
11941207
"metadata": {},
11951208
"output_type": "execute_result"
11961209
}
@@ -1230,9 +1243,7 @@
12301243
"id": "501b70f5-3276-45e8-9e48-7331964004d7",
12311244
"metadata": {},
12321245
"source": [
1233-
"https://github.com/uds-se/sflkit\n",
1234-
"\n",
1235-
"<img src=\"qrcode.png\" style=\"width:500px\">"
1246+
"https://github.com/uds-se/sflkit"
12361247
]
12371248
}
12381249
],
@@ -1252,7 +1263,7 @@
12521263
"name": "python",
12531264
"nbconvert_exporter": "python",
12541265
"pygments_lexer": "ipython3",
1255-
"version": "3.10.4"
1266+
"version": "3.11.1"
12561267
}
12571268
},
12581269
"nbformat": 4,

src/sflkit/language/python/factory.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,18 @@ def visit_ExceptHandler(self, node: ExceptHandler) -> Injection:
203203
)
204204

205205
def visit_Try(self, node: Try) -> Injection:
206-
else_branch_event = BranchEvent(
207-
self.file, node.lineno, self.id_generator.get_next_id(), self.branch_id, -1
208-
)
209-
return Injection(
210-
orelse=[self.get_event_call(else_branch_event)], events=[else_branch_event]
211-
)
206+
if node.handlers:
207+
else_branch_event = BranchEvent(
208+
self.file,
209+
node.lineno,
210+
self.id_generator.get_next_id(),
211+
self.branch_id,
212+
-1,
213+
)
214+
return Injection(
215+
orelse=[self.get_event_call(else_branch_event)],
216+
events=[else_branch_event],
217+
)
212218

213219

214220
class DefEventFactory(PythonEventFactory):

0 commit comments

Comments
 (0)