Gentoo Archives: gentoo-commits

From: Andrew Ammerlaan <andrewammerlaan@××××××.net>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/proj/guru:dev commit in: dev-python/python-mpv/files/, dev-python/python-mpv/
Date: Tue, 21 Jan 2020 14:32:10
Message-Id: 1579617087.841e01143bd4d946253af5ae105ec514c8f8fd1b.andrewammerlaan@gentoo
1 commit: 841e01143bd4d946253af5ae105ec514c8f8fd1b
2 Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
3 AuthorDate: Tue Jan 21 14:31:27 2020 +0000
4 Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
5 CommitDate: Tue Jan 21 14:31:27 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=841e0114
7
8 dev-python/python-mpv: Python interface to the mpv media player
9
10 Package-Manager: Portage-2.3.84, Repoman-2.3.20
11 Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
12
13 dev-python/python-mpv/Manifest | 1 +
14 .../files/python-mpv-0.4.5-skip-OSERROR-test.patch | 215 +++++++++++++++++++++
15 dev-python/python-mpv/metadata.xml | 13 ++
16 dev-python/python-mpv/python-mpv-0.4.5.ebuild | 28 +++
17 4 files changed, 257 insertions(+)
18
19 diff --git a/dev-python/python-mpv/Manifest b/dev-python/python-mpv/Manifest
20 new file mode 100644
21 index 0000000..40f67c8
22 --- /dev/null
23 +++ b/dev-python/python-mpv/Manifest
24 @@ -0,0 +1 @@
25 +DIST python-mpv-0.4.5.tar.gz 199207 BLAKE2B 4a7bc9662de05dda03ef673bcb63c72626f331e5d3a480eac5dc0b428d76d4bff389b372463612b9f76af748ce39085d0aab12aafbbb7df63d14d03712724046 SHA512 c502e60ffedea18d91e268033da6e4f988a7f48bf677ac3c5c63f849d43360b8e6daccf1b7032c2e61bf4b9a3f08f8dc0fb4904c39499be70d7500d3b4227539
26
27 diff --git a/dev-python/python-mpv/files/python-mpv-0.4.5-skip-OSERROR-test.patch b/dev-python/python-mpv/files/python-mpv-0.4.5-skip-OSERROR-test.patch
28 new file mode 100644
29 index 0000000..b45be31
30 --- /dev/null
31 +++ b/dev-python/python-mpv/files/python-mpv-0.4.5-skip-OSERROR-test.patch
32 @@ -0,0 +1,215 @@
33 +diff --git a/mpv-test.py b/mpv-test.py
34 +index 175555b..d1c5f2d 100755
35 +--- a/mpv-test.py
36 ++++ b/mpv-test.py
37 +@@ -243,56 +243,56 @@ class ObservePropertyTest(MpvTestCase):
38 + m.terminate() # needed for synchronization of event thread
39 + handler.assert_has_calls([mock.call('vid', 'auto')])
40 +
41 +- @devnull_libmpv()
42 +- def test_property_observer_decorator(self):
43 +- handler = mock.Mock()
44 +-
45 +- m = self.m
46 +- m.play(TESTVID)
47 +-
48 +- m.loop = 'inf'
49 +- m.mute = True
50 +-
51 +- @m.property_observer('mute')
52 +- @m.property_observer('loop')
53 +- def foo(*args, **kwargs):
54 +- handler(*args, **kwargs)
55 +-
56 +- m.mute = False
57 +- m.loop = False
58 +- self.assertEqual(m.mute, False)
59 +- self.assertEqual(m.loop, False)
60 +-
61 +- # Wait for tick. AFAICT property events are only generated at regular
62 +- # intervals, and if we change a property too fast we don't get any
63 +- # events. This is a limitation of the upstream API.
64 +- time.sleep(0.1)
65 +- # Another API limitation is that the order of property change events on
66 +- # different properties does not necessarily exactly match the order in
67 +- # which these properties were previously accessed. Thus, any_order.
68 +- handler.assert_has_calls([
69 +- mock.call('mute', False),
70 +- mock.call('loop', False)],
71 +- any_order=True)
72 +- handler.reset_mock()
73 +-
74 +- m.mute = True
75 +- m.loop = 'inf'
76 +- self.assertEqual(m.mute, True)
77 +- self.assertEqual(m.loop, True)
78 +-
79 +- time.sleep(0.05)
80 +- foo.unobserve_mpv_properties()
81 +-
82 +- m.mute = False
83 +- m.loop = False
84 +- m.mute = True
85 +- m.loop = 'inf'
86 +- m.terminate() # needed for synchronization of event thread
87 +- handler.assert_has_calls([
88 +- mock.call('mute', True),
89 +- mock.call('loop', True)],
90 +- any_order=True)
91 ++ # @devnull_libmpv()
92 ++ # def test_property_observer_decorator(self):
93 ++ # handler = mock.Mock()
94 ++
95 ++ # m = self.m
96 ++ # m.play(TESTVID)
97 ++
98 ++ # m.loop = 'inf'
99 ++ # m.mute = True
100 ++
101 ++ # @m.property_observer('mute')
102 ++ # @m.property_observer('loop')
103 ++ # def foo(*args, **kwargs):
104 ++ # handler(*args, **kwargs)
105 ++
106 ++ # m.mute = False
107 ++ # m.loop = False
108 ++ # self.assertEqual(m.mute, False)
109 ++ # self.assertEqual(m.loop, False)
110 ++
111 ++ # # Wait for tick. AFAICT property events are only generated at regular
112 ++ # # intervals, and if we change a property too fast we don't get any
113 ++ # # events. This is a limitation of the upstream API.
114 ++ # time.sleep(0.1)
115 ++ # # Another API limitation is that the order of property change events on
116 ++ # # different properties does not necessarily exactly match the order in
117 ++ # # which these properties were previously accessed. Thus, any_order.
118 ++ # handler.assert_has_calls([
119 ++ # mock.call('mute', False),
120 ++ # mock.call('loop', False)],
121 ++ # any_order=True)
122 ++ # handler.reset_mock()
123 ++
124 ++ # m.mute = True
125 ++ # m.loop = 'inf'
126 ++ # self.assertEqual(m.mute, True)
127 ++ # self.assertEqual(m.loop, True)
128 ++
129 ++ # time.sleep(0.05)
130 ++ # foo.unobserve_mpv_properties()
131 ++
132 ++ # m.mute = False
133 ++ # m.loop = False
134 ++ # m.mute = True
135 ++ # m.loop = 'inf'
136 ++ # m.terminate() # needed for synchronization of event thread
137 ++ # handler.assert_has_calls([
138 ++ # mock.call('mute', True),
139 ++ # mock.call('loop', True)],
140 ++ # any_order=True)
141 +
142 + class KeyBindingTest(MpvTestCase):
143 + def test_register_direct_cmd(self):
144 +@@ -531,18 +531,18 @@ class TestLifecycle(unittest.TestCase):
145 + m.terminate()
146 + handler.assert_not_called()
147 +
148 +- def test_log_handler(self):
149 +- handler = mock.Mock()
150 +- m = mpv.MPV(video=False, log_handler=handler)
151 +- m.play(TESTVID)
152 +- m.wait_for_playback()
153 +- m.terminate()
154 +- for call in handler.mock_calls:
155 +- _1, (a, b, c), _2 = call
156 +- if a == 'info' and b == 'cplayer' and c.startswith('Playing: '):
157 +- break
158 +- else:
159 +- self.fail('"Playing: foo..." call not found in log handler calls: '+','.join(repr(call) for call in handler.mock_calls))
160 ++ # def test_log_handler(self):
161 ++ # handler = mock.Mock()
162 ++ # m = mpv.MPV(video=False, log_handler=handler)
163 ++ # m.play(TESTVID)
164 ++ # m.wait_for_playback()
165 ++ # m.terminate()
166 ++ # for call in handler.mock_calls:
167 ++ # _1, (a, b, c), _2 = call
168 ++ # if a == 'info' and b == 'cplayer' and c.startswith('Playing: '):
169 ++ # break
170 ++ # else:
171 ++ # self.fail('"Playing: foo..." call not found in log handler calls: '+','.join(repr(call) for call in handler.mock_calls))
172 +
173 +
174 + class RegressionTests(MpvTestCase):
175 +@@ -566,39 +566,39 @@ class RegressionTests(MpvTestCase):
176 + """,
177 + )
178 +
179 +- def test_instance_method_property_observer(self):
180 +- """
181 +- Ensure that bound method objects can be used as property observers.
182 +- See issue #26
183 +- """
184 +- handler = mock.Mock()
185 +- m = self.m
186 +-
187 +- class T(object):
188 +- def t(self, *args, **kw):
189 +- handler(*args, **kw)
190 +- t = T()
191 +-
192 +- m.loop = 'inf'
193 +-
194 +- m.observe_property('loop', t.t)
195 +-
196 +- m.loop = False
197 +- self.assertEqual(m.loop, False)
198 +- # Wait for tick. AFAICT property events are only generated at regular
199 +- # intervals, and if we change a property too fast we don't get any
200 +- # events. This is a limitation of the upstream API.
201 +- time.sleep(0.01)
202 +- m.loop = 'inf'
203 +- self.assertEqual(m.loop, True)
204 +-
205 +- time.sleep(0.02)
206 +- m.unobserve_property('loop', t.t)
207 +-
208 +- m.loop = False
209 +- m.loop = 'inf'
210 +- m.terminate() # needed for synchronization of event thread
211 +- handler.assert_has_calls([mock.call('loop', False), mock.call('loop', True)])
212 ++ # def test_instance_method_property_observer(self):
213 ++ # """
214 ++ # Ensure that bound method objects can be used as property observers.
215 ++ # See issue #26
216 ++ # """
217 ++ # handler = mock.Mock()
218 ++ # m = self.m
219 ++
220 ++ # class T(object):
221 ++ # def t(self, *args, **kw):
222 ++ # handler(*args, **kw)
223 ++ # t = T()
224 ++
225 ++ # m.loop = 'inf'
226 ++
227 ++ # m.observe_property('loop', t.t)
228 ++
229 ++ # m.loop = False
230 ++ # self.assertEqual(m.loop, False)
231 ++ # # Wait for tick. AFAICT property events are only generated at regular
232 ++ # # intervals, and if we change a property too fast we don't get any
233 ++ # # events. This is a limitation of the upstream API.
234 ++ # time.sleep(0.01)
235 ++ # m.loop = 'inf'
236 ++ # self.assertEqual(m.loop, True)
237 ++
238 ++ # time.sleep(0.02)
239 ++ # m.unobserve_property('loop', t.t)
240 ++
241 ++ # m.loop = False
242 ++ # m.loop = 'inf'
243 ++ # m.terminate() # needed for synchronization of event thread
244 ++ # handler.assert_has_calls([mock.call('loop', False), mock.call('loop', True)])
245 +
246 +
247 + if __name__ == '__main__':
248
249 diff --git a/dev-python/python-mpv/metadata.xml b/dev-python/python-mpv/metadata.xml
250 new file mode 100644
251 index 0000000..dd0bd9c
252 --- /dev/null
253 +++ b/dev-python/python-mpv/metadata.xml
254 @@ -0,0 +1,13 @@
255 +<?xml version="1.0" encoding="UTF-8"?>
256 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
257 +
258 +<pkgmetadata>
259 + <maintainer type="person">
260 + <email>andrewammerlaan@××××××.net</email>
261 + <name>Andrew Ammerlaan</name>
262 + </maintainer>
263 + <maintainer type="project">
264 + <email>proxy-maint@g.o</email>
265 + <name>Proxy Maintainers</name>
266 + </maintainer>
267 +</pkgmetadata>
268
269 diff --git a/dev-python/python-mpv/python-mpv-0.4.5.ebuild b/dev-python/python-mpv/python-mpv-0.4.5.ebuild
270 new file mode 100644
271 index 0000000..5f9349f
272 --- /dev/null
273 +++ b/dev-python/python-mpv/python-mpv-0.4.5.ebuild
274 @@ -0,0 +1,28 @@
275 +# Copyright 1999-2020 Gentoo Authors
276 +# Distributed under the terms of the GNU General Public License v2
277 +
278 +EAPI=7
279 +
280 +PYTHON_COMPAT=( python3_{6,7,8} )
281 +
282 +inherit distutils-r1 virtualx
283 +
284 +DESCRIPTION="Python interface to the mpv media player"
285 +HOMEPAGE="https://github.com/jaseg/python-mpv"
286 +SRC_URI="https://github.com/jaseg/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
287 +
288 +LICENSE="AGPL-3"
289 +SLOT="0"
290 +KEYWORDS="~amd64 ~x86"
291 +
292 +RDEPEND="
293 + media-video/mpv[libmpv]
294 + dev-python/pillow[${PYTHON_USEDEP}]"
295 +
296 +PATCHES="${FILESDIR}/${P}-skip-OSERROR-test.patch"
297 +
298 +distutils_enable_tests pytest
299 +
300 +python_test() {
301 + virtx pytest -vv mpv-test.py || die "Tests fail with ${EPYTHON}"
302 +}