Skip to content

Commit 6203b8b

Browse files
committed
refactor!(environment): Add getenv for key lookups, remove from show_environments
For individual lookups, use server.getenv(key) and session.getenv(key)
1 parent d8b0cca commit 6203b8b

File tree

3 files changed

+53
-26
lines changed

3 files changed

+53
-26
lines changed

libtmux/common.py

+40-13
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,43 @@ def remove_environment(self, name):
108108
proc.stderr = proc.stderr[0]
109109
raise ValueError("tmux set-environment stderr: %s" % proc.stderr)
110110

111-
def show_environment(self, name=None):
112-
"""Show environment ``$ tmux show-environment -t [session] <name>``.
111+
def show_environment(self):
112+
"""Show environment ``$ tmux show-environment -t [session]``.
113113
114-
Return dict of environment variables for the session or the value of a
115-
specific variable if the name is specified.
114+
Return dict of environment variables for the session.
115+
116+
.. versionchanged:: 0.13
117+
118+
Removed per-item lookups. Use :meth:`libtmux.common.EnvironmentMixin.getenv`.
119+
120+
Returns
121+
-------
122+
dict
123+
environmental variables in dict, if no name, or str if name
124+
entered.
125+
"""
126+
tmux_args = ["show-environment"]
127+
if self._add_option:
128+
tmux_args += [self._add_option]
129+
vars = self.cmd(*tmux_args).stdout
130+
vars = [tuple(item.split("=", 1)) for item in vars]
131+
vars_dict = {}
132+
for t in vars:
133+
if len(t) == 2:
134+
vars_dict[t[0]] = t[1]
135+
elif len(t) == 1:
136+
vars_dict[t[0]] = True
137+
else:
138+
raise ValueError("unexpected variable %s", t)
139+
140+
return vars_dict
141+
142+
def getenv(self, name):
143+
"""Show environment variable ``$ tmux show-environment -t [session] <name>``.
144+
145+
Return the value of a specific variable if the name is specified.
146+
147+
.. versionadded:: 0.13
116148
117149
Parameters
118150
----------
@@ -121,15 +153,13 @@ def show_environment(self, name=None):
121153
122154
Returns
123155
-------
124-
str or dict
125-
environmental variables in dict, if no name, or str if name
126-
entered.
156+
str
157+
Value of environment variable
127158
"""
128159
tmux_args = ["show-environment"]
129160
if self._add_option:
130161
tmux_args += [self._add_option]
131-
if name:
132-
tmux_args += [name]
162+
tmux_args += [name]
133163
vars = self.cmd(*tmux_args).stdout
134164
vars = [tuple(item.split("=", 1)) for item in vars]
135165
vars_dict = {}
@@ -141,10 +171,7 @@ def show_environment(self, name=None):
141171
else:
142172
raise ValueError("unexpected variable %s", t)
143173

144-
if name:
145-
return vars_dict.get(name)
146-
147-
return vars_dict
174+
return vars_dict.get(name)
148175

149176

150177
class tmux_cmd:

tests/test_server.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,20 @@ def test_show_environment(server):
6363
assert isinstance(_vars, dict)
6464

6565

66-
def test_set_show_environment_single(server, session):
66+
def test_getenv(server, session):
6767
"""Set environment then Server.show_environment(key)."""
6868
server.set_environment("FOO", "BAR")
69-
assert "BAR" == server.show_environment("FOO")
69+
assert "BAR" == server.getenv("FOO")
7070

7171
server.set_environment("FOO", "DAR")
72-
assert "DAR" == server.show_environment("FOO")
72+
assert "DAR" == server.getenv("FOO")
7373

7474
assert "DAR" == server.show_environment()["FOO"]
7575

7676

7777
def test_show_environment_not_set(server):
7878
"""Unset environment variable returns None."""
79-
assert server.show_environment("BAR") is None
79+
assert server.getenv("BAR") is None
8080

8181

8282
def test_new_session(server):

tests/test_session.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -172,35 +172,35 @@ def test_set_show_environment_single(session):
172172
"""Set environment then Session.show_environment(key)."""
173173

174174
session.set_environment("FOO", "BAR")
175-
assert session.show_environment("FOO") == "BAR"
175+
assert session.getenv("FOO") == "BAR"
176176

177177
session.set_environment("FOO", "DAR")
178-
assert session.show_environment("FOO") == "DAR"
178+
assert session.getenv("FOO") == "DAR"
179179

180180
assert session.show_environment()["FOO"] == "DAR"
181181

182182

183183
def test_show_environment_not_set(session):
184184
"""Not set environment variable returns None."""
185-
assert session.show_environment("BAR") is None
185+
assert session.getenv("BAR") is None
186186

187187

188188
def test_remove_environment(session):
189189
"""Remove environment variable."""
190-
assert session.show_environment("BAM") is None
190+
assert session.getenv("BAM") is None
191191
session.set_environment("BAM", "OK")
192-
assert session.show_environment("BAM") == "OK"
192+
assert session.getenv("BAM") == "OK"
193193
session.remove_environment("BAM")
194-
assert session.show_environment("BAM") is None
194+
assert session.getenv("BAM") is None
195195

196196

197197
def test_unset_environment(session):
198198
"""Unset environment variable."""
199-
assert session.show_environment("BAM") is None
199+
assert session.getenv("BAM") is None
200200
session.set_environment("BAM", "OK")
201-
assert session.show_environment("BAM") == "OK"
201+
assert session.getenv("BAM") == "OK"
202202
session.unset_environment("BAM")
203-
assert session.show_environment("BAM") is None
203+
assert session.getenv("BAM") is None
204204

205205

206206
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)