From bba45ea92452375f6a4ae75b69eb4b520d87d480 Mon Sep 17 00:00:00 2001 From: Gabriele Bozzola Date: Sun, 13 Oct 2024 10:48:19 -0700 Subject: [PATCH] Fix SCPyPlotExt The `SCPyPlotExt` had two problems: - the default argument to `pdata` is `Profile.fetch()`, but `Profile` was not imported - the extension was not adding methods to `SnoopCompile.pgdsgui` As a result, the tutorial on `pgdsgui` was broken. This commit fixes both of these issues. --- ext/SCPyPlotExt.jl | 8 +++++--- src/SnoopCompile.jl | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ext/SCPyPlotExt.jl b/ext/SCPyPlotExt.jl index fca26cca..121fd5a0 100644 --- a/ext/SCPyPlotExt.jl +++ b/ext/SCPyPlotExt.jl @@ -1,5 +1,7 @@ module SCPyPlotExt +import Profile + using SnoopCompile using SnoopCompile: MethodLoc, InferenceTimingNode, PGDSData, lookups using PyPlot: PyPlot, plt, PyCall @@ -7,7 +9,7 @@ using PyPlot: PyPlot, plt, PyCall get_bystr(@nospecialize(by)) = by === inclusive ? "Inclusive" : by === exclusive ? "Exclusive" : error("unknown ", by) -function pgdsgui(ax::PyCall.PyObject, ridata::AbstractVector{Pair{Union{Method,MethodLoc},PGDSData}}; bystr, consts, markersz=25, linewidth=0.5, t0 = 0.001, interactive::Bool=true, kwargs...) +function SnoopCompile.pgdsgui(ax::PyCall.PyObject, ridata::AbstractVector{Pair{Union{Method,MethodLoc},PGDSData}}; bystr, consts, markersz=25, linewidth=0.5, t0 = 0.001, interactive::Bool=true, kwargs...) methodref = Ref{Union{Method,MethodLoc}}() # returned to the user for inspection of clicked methods function onclick(event) xc, yc = event.xdata, event.ydata @@ -48,11 +50,11 @@ function pgdsgui(ax::PyCall.PyObject, ridata::AbstractVector{Pair{Union{Method,M return methodref end -function pgdsgui(ax::PyCall.PyObject, args...; consts::Bool=true, by=inclusive, kwargs...) +function SnoopCompile.pgdsgui(ax::PyCall.PyObject, args...; consts::Bool=true, by=inclusive, kwargs...) pgdsgui(ax, prep_ri(args...; consts, by, kwargs...); bystr=get_bystr(by), consts, kwargs...) end -function pgdsgui(args...; kwargs...) +function SnoopCompile.pgdsgui(args...; kwargs...) fig, ax = plt.subplots() pgdsgui(ax, args...; kwargs...), ax end diff --git a/src/SnoopCompile.jl b/src/SnoopCompile.jl index 29878794..c51e9397 100644 --- a/src/SnoopCompile.jl +++ b/src/SnoopCompile.jl @@ -105,7 +105,7 @@ that method. `ax` is the pyplot axis of the scatterplot. !!! compat - `pgdsgui` depends on PyPlot via the Requires.jl package. You must load both SnoopCompile and PyPlot for this function to be defined. + `pgdsgui` depends on PyPlot via Julia extensions. You must load both SnoopCompile and PyPlot for this function to be defined. """ function pgdsgui end export pgdsgui