Skip to content

Commit 6a49ac2

Browse files
committed
python exception catcher, benchmark get_owner
1 parent 5da8f51 commit 6a49ac2

File tree

5 files changed

+73
-12
lines changed

5 files changed

+73
-12
lines changed

+stdlib/+python/get_owner.m

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
function n = get_owner(file)
2-
arguments
3-
file (1,1) string
4-
end
52

63
n = "";
74

8-
if stdlib.strempty(file), return, end
5+
if stdlib.strempty(file)
6+
return
7+
end
98

10-
try %#ok<TRYNC>
9+
try
1110
n = string(py.pathlib.Path(file).owner());
11+
catch e
12+
pythonException(e)
1213
end
1314

1415
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function pythonException(e)
2+
3+
switch e.identifier
4+
case 'MATLAB:Python:PyException'
5+
if ~contains(e.message, "FileNotFoundError")
6+
rethrow(e)
7+
end
8+
otherwise, rethrow(e)
9+
end
10+
11+
end

example/BenchmarkGetOwner.m

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
classdef (SharedTestFixtures={ matlab.unittest.fixtures.PathFixture("..")}) ...
2+
BenchmarkGetOwner < matlab.perftest.TestCase
3+
4+
properties(TestParameter)
5+
backend
6+
end
7+
8+
methods (TestParameterDefinition, Static)
9+
function backend = setupBackend()
10+
backend = init_backend('get_owner');
11+
end
12+
end
13+
14+
15+
methods (Test)
16+
17+
function bench_exist(tc, backend)
18+
tc.startMeasuring()
19+
o = stdlib.get_owner('.', backend);
20+
tc.stopMeasuring()
21+
22+
tc.verifyClass(o, 'string')
23+
tc.verifyGreaterThan(strlength(o), 0)
24+
end
25+
26+
27+
function bench_not_exist(tc, backend)
28+
tc.startMeasuring()
29+
o = stdlib.get_owner('not-exist', backend);
30+
tc.stopMeasuring()
31+
32+
tc.verifyClass(o, 'string')
33+
tc.verifyEqual(strlength(o), 0)
34+
end
35+
36+
end
37+
38+
end

example/BenchmarkGetOwnerRun.m

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function [r, s] = BenchmarkGetOwnerRun()
2+
%% Exist
3+
r.same = run_bench('BenchmarkGetOwner/bench_exist');
4+
s.exist = sampleSummary(r.same);
5+
disp(sortrows(s.exist, "Median"))
6+
%% Not Exist
7+
r.not = run_bench('BenchmarkGetOwner/bench_not_exist');
8+
s.not = sampleSummary(r.not);
9+
disp(sortrows(s.not, "Median"))
10+
11+
end
12+
13+
14+
function result = run_bench(name)
15+
suite = testsuite(name);
16+
exp = matlab.perftest.TimeExperiment.limitingSamplingError(MaxSamples=25);
17+
result = exp.run(suite);
18+
end

example/benchmark_get_owner.m

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)