Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Handle multiline command-line args#363

Open
stepan-anokhin wants to merge 1 commit intopythonprofilers:masterfrom
stepan-anokhin:handle-multiline-args
Open

Handle multiline command-line args#363
stepan-anokhin wants to merge 1 commit intopythonprofilers:masterfrom
stepan-anokhin:handle-multiline-args

Conversation

@stepan-anokhin
Copy link

@stepan-anokhinstepan-anokhin commentedSep 17, 2022
edited
Loading

Fix the problem from#210

The problem occurs whenmprof run <command> has multi-line arguments:

For example:

read -r -d'' MESSAGE<<EOM  hello  worldEOMmprof runecho"$MESSAGE"mprof plot
Using last profile data.Traceback (most recent call last):  File "/home/stepan/mprof-example/venv/bin/mprof", line 8, in <module>    sys.exit(main())  File "/home/stepan/mprof-example/venv/lib/python3.8/site-packages/mprof.py", line 905, in main    actions[get_action()]()  File "/home/stepan/mprof-example/venv/lib/python3.8/site-packages/mprof.py", line 819, in plot_action    mprofile = plotter(filename, index=n, timestamps=timestamps, options=args)  File "/home/stepan/mprof-example/venv/lib/python3.8/site-packages/mprof.py", line 409, in plot_file    mprofile = read_mprofile_file(filename)  File "/home/stepan/mprof-example/venv/lib/python3.8/site-packages/mprof.py", line 364, in read_mprofile_file    field, value = l.split(' ', 1)ValueError: not enough values to unpack (expected 2, got 1)

"""Given a set or arguments, compute command-line."""
blanks = set(' \t')
args = [s if blanks.isdisjoint(s) else "'" + s + "'" for s in args]
args = [shlex.quote(s).replace('\n', '\\n') for s in args]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I don't think usingshlex.quote is the right choice here, because it quotes strings in ways that areparseable by the shell, and the strings encoded in the file will never be parsed by the shell. But the shell-escaped versions look ugly in the plots.

For example, this command:

mprof echo "Hello's fine"

...will be escaped by themaster branch code asecho 'Hello's fine' which looks sort of nonsensical but it's fine, it doesn't matter if the quoting is legal, just that it's intelligible in the plot.

Usingshlex.quote, though, what you get for a plot label is not really an improvement:

image

Doing the.replace('\n', '\\n') is a good idea (though I think newlines could also just be replaced with a space, and it would be fine), but the quoting should be left to simple, not-technically-correct-but-we-get-the-idea logic like in the previous code.

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

1 more reviewer

@ferdnycferdnycferdnyc left review comments

Reviewers whose approvals may not affect merge requirements

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@stepan-anokhin@ferdnyc

[8]ページ先頭

©2009-2026 Movatter.jp