python-check.scm 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
  3. ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
  4. ;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
  5. ;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  6. ;;; Copyright © 2019, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
  7. ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
  8. ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
  9. ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
  10. ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
  11. ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
  12. ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
  13. ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
  14. ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
  15. ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
  16. ;;;
  17. ;;; This file is part of GNU Guix.
  18. ;;;
  19. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  20. ;;; under the terms of the GNU General Public License as published by
  21. ;;; the Free Software Foundation; either version 3 of the License, or (at
  22. ;;; your option) any later version.
  23. ;;;
  24. ;;; GNU Guix is distributed in the hope that it will be useful, but
  25. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  26. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  27. ;;; GNU General Public License for more details.
  28. ;;;
  29. ;;; You should have received a copy of the GNU General Public License
  30. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  31. (define-module (gnu packages python-check)
  32. #:use-module (gnu packages)
  33. #:use-module (gnu packages check)
  34. #:use-module (gnu packages django)
  35. #:use-module (gnu packages openstack)
  36. #:use-module (gnu packages python-build)
  37. #:use-module (gnu packages python-web)
  38. #:use-module (gnu packages python-xyz)
  39. #:use-module (gnu packages qt)
  40. #:use-module (gnu packages web)
  41. #:use-module (gnu packages xml)
  42. #:use-module (gnu packages xorg)
  43. #:use-module (guix utils)
  44. #:use-module ((guix licenses) #:prefix license:)
  45. #:use-module (guix packages)
  46. #:use-module (guix git-download)
  47. #:use-module (guix download)
  48. #:use-module (guix build-system python))
  49. (define-public python-tappy
  50. (package
  51. (name "python-tappy")
  52. (version "3.0")
  53. (source
  54. (origin
  55. (method url-fetch)
  56. (uri (pypi-uri "tap.py" version))
  57. (sha256
  58. (base32
  59. "0w4w6pqjkv54j7rv6vdrpfxa72c5516bnlhpcqr3vrb4zpmyxvpm"))))
  60. (build-system python-build-system)
  61. (home-page "https://github.com/python-tap/tappy")
  62. (synopsis "Tools for Test Anything Protocol")
  63. (description "Tappy is a set of tools for working with the Test Anything
  64. Protocol (TAP) in Python. TAP is a line based test protocol for recording test
  65. data in a standard way.")
  66. (license license:bsd-3)))
  67. (define-public python-pytest-click
  68. (package
  69. (name "python-pytest-click")
  70. (version "1.0.2")
  71. (source
  72. (origin
  73. (method url-fetch)
  74. (uri
  75. (pypi-uri "pytest_click" version))
  76. (sha256
  77. (base32 "1rcv4m850rl7djzdgzz2zhjd8g5ih8w6l0sj2f9hsynymlsq82xl"))))
  78. (build-system python-build-system)
  79. (propagated-inputs
  80. `(("python-click" ,python-click)
  81. ("python-pytest" ,python-pytest)))
  82. (home-page "https://github.com/Stranger6667/pytest-click")
  83. (synopsis "Py.test plugin for Click")
  84. (description "This package provides a plugin to test Python click
  85. interfaces with pytest.")
  86. (license license:expat)))
  87. (define-public python-testfixtures
  88. (package
  89. (name "python-testfixtures")
  90. (version "6.17.1")
  91. (source
  92. (origin
  93. (method url-fetch)
  94. (uri (pypi-uri "testfixtures" version))
  95. (sha256
  96. (base32 "1nlv2hz20czjp4a811ichl5kwg99rh84l0mw9wq4rk3idzfs1hsy"))))
  97. (build-system python-build-system)
  98. (arguments
  99. `(#:tests? #f)) ; PyTest-Django fails to build in master
  100. (native-inputs
  101. `(("python-pytest" ,python-pytest)
  102. ("python-pytest-cov" ,python-pytest-cov)
  103. ;;("python-pytest-django" ,python-pytest-django)
  104. ("python-twine" ,python-twine)
  105. ("python-wheel" ,python-wheel)))
  106. (synopsis "Tests components for Python")
  107. (description "Testfixtures is a collection of helpers and mock objects that
  108. are useful when writing automated tests in Python.")
  109. (home-page "https://testfixtures.readthedocs.io/en/latest/")
  110. (license license:expat)))
  111. (define-public python-coveralls
  112. (package
  113. (name "python-coveralls")
  114. (version "3.2.0")
  115. (home-page "https://github.com/coveralls-clients/coveralls-python")
  116. (source
  117. (origin
  118. ;; The PyPI release lacks tests, so we pull from git instead.
  119. (method git-fetch)
  120. (uri (git-reference (url home-page) (commit version)))
  121. (file-name (git-file-name name version))
  122. (sha256
  123. (base32
  124. "1915ab77nfb1rfw4i2ps0zy19wpf20lwxn81qxxbwyd2gy7m0fn8"))))
  125. (build-system python-build-system)
  126. (arguments
  127. '(#:phases (modify-phases %standard-phases
  128. (add-before 'check 'disable-git-test
  129. (lambda _
  130. ;; Remove test that requires 'git' and the full checkout.
  131. (delete-file "tests/git_test.py")))
  132. (replace 'check
  133. (lambda* (#:key tests? #:allow-other-keys)
  134. (if tests?
  135. (invoke "pytest" "-vv")
  136. (format #t "test suite not run~%")))))))
  137. (propagated-inputs
  138. `(("python-coverage" ,python-coverage)
  139. ("python-docopt" ,python-docopt)
  140. ("python-pyyaml" ,python-pyyaml)
  141. ("python-requests" ,python-requests)))
  142. (native-inputs
  143. `(("python-mock" ,python-mock)
  144. ("python-pytest" ,python-pytest)
  145. ("python-responses" ,python-responses)))
  146. (synopsis "Show coverage stats online via coveralls.io")
  147. (description
  148. "Coveralls.io is a service for publishing code coverage statistics online.
  149. This package provides seamless integration with coverage.py (and thus pytest,
  150. nosetests, etc...) in Python projects.")
  151. (license license:expat)))
  152. (define-public python-junit-xml
  153. ;; XXX: There are no tags or PyPI releases, so take the latest commit
  154. ;; and use the version defined in setup.py.
  155. (let ((version "1.9")
  156. (commit "4bd08a272f059998cedf9b7779f944d49eba13a6")
  157. (revision "0"))
  158. (package
  159. (name "python-junit-xml")
  160. (version (git-version version revision commit))
  161. (home-page "https://github.com/kyrus/python-junit-xml")
  162. (source (origin
  163. (method git-fetch)
  164. (uri (git-reference (url home-page) (commit commit)))
  165. (file-name (git-file-name name version))
  166. (sha256
  167. (base32
  168. "0b8kbjhk3j10rk0vcniy695m3h43yip6y93h1bd6jjh0cp7s09c7"))))
  169. (build-system python-build-system)
  170. (arguments
  171. `(#:phases (modify-phases %standard-phases
  172. (replace 'check
  173. (lambda _
  174. (invoke "pytest" "-vv"))))))
  175. (native-inputs
  176. `(("python-pytest" ,python-pytest)))
  177. (propagated-inputs
  178. `(("python-six" ,python-six)))
  179. (synopsis "Create JUnit XML test results")
  180. (description
  181. "This package provides a Python module for creating JUnit XML test
  182. result documents that can be read by tools such as Jenkins or Bamboo.")
  183. (license license:expat))))
  184. (define-public python-vcrpy
  185. (package
  186. (name "python-vcrpy")
  187. (version "2.0.1")
  188. (source
  189. (origin
  190. (method url-fetch)
  191. (uri (pypi-uri "vcrpy" version))
  192. (sha256
  193. (base32
  194. "0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp"))))
  195. (build-system python-build-system)
  196. (arguments `(#:tests? #f)) ; tests require more packages for python-pytest-httpbin
  197. (propagated-inputs
  198. `(("python-pyyaml" ,python-pyyaml)
  199. ("python-six" ,python-six)
  200. ("python-wrapt" ,python-wrapt)
  201. ("python-yarl" ,python-yarl)))
  202. (native-inputs
  203. `(("python-mock" ,python-mock)
  204. ("python-pytest" ,python-pytest)
  205. ("python-pytest-httpbin" ,python-pytest-httpbin)))
  206. (home-page "https://github.com/kevin1024/vcrpy")
  207. (synopsis "Automatically mock your HTTP interactions")
  208. (description
  209. "VCR.py simplifies and speeds up tests that make HTTP requests. The first
  210. time you run code that is inside a VCR.py context manager or decorated function,
  211. VCR.py records all HTTP interactions that take place through the libraries it
  212. supports and serializes and writes them to a flat file (in yaml format by
  213. default). This flat file is called a cassette. When the relevant piece of code
  214. is executed again, VCR.py will read the serialized requests and responses from
  215. the aforementioned cassette file, and intercept any HTTP requests that it
  216. recognizes from the original test run and return the responses that corresponded
  217. to those requests. This means that the requests will not actually result in
  218. HTTP traffic, which confers several benefits including:
  219. @enumerate
  220. @item The ability to work offline
  221. @item Completely deterministic tests
  222. @item Increased test execution speed
  223. @end enumerate
  224. If the server you are testing against ever changes its API, all you need to do
  225. is delete your existing cassette files, and run your tests again. VCR.py will
  226. detect the absence of a cassette file and once again record all HTTP
  227. interactions, which will update them to correspond to the new API.")
  228. (license license:expat)))
  229. (define-public python-pytest-ordering
  230. (package
  231. (name "python-pytest-ordering")
  232. (version "0.6")
  233. (source
  234. (origin
  235. ;; No tests in the PyPI tarball.
  236. (method git-fetch)
  237. (uri (git-reference
  238. (url "https://github.com/ftobia/pytest-ordering")
  239. (commit version)))
  240. (file-name (git-file-name name version))
  241. (sha256
  242. (base32 "14msj5gyqza0gk3x7h1ivmjrwza82v84cj7jx3ks0fw9lpin7pjq"))))
  243. (build-system python-build-system)
  244. (arguments
  245. '(#:phases
  246. (modify-phases %standard-phases
  247. (replace 'check
  248. (lambda* (#:key inputs outputs #:allow-other-keys)
  249. (add-installed-pythonpath inputs outputs)
  250. (invoke "pytest" "-vv" "-k"
  251. ;; This test fails because of a type mismatch of an
  252. ;; argument passed to @code{pytest.main}.
  253. "not test_run_marker_registered"))))))
  254. (native-inputs
  255. `(("python-pytest" ,python-pytest)))
  256. (home-page "https://github.com/ftobia/pytest-ordering")
  257. (synopsis "Pytest plugin to run your tests in a specific order")
  258. (description
  259. "This plugin defines Pytest markers to ensure that some tests, or groups
  260. of tests run in a specific order.")
  261. (license license:expat)))
  262. (define-public python-pytest-astropy-header
  263. (package
  264. (name "python-pytest-astropy-header")
  265. (version "0.1.2")
  266. (source
  267. (origin
  268. (method url-fetch)
  269. (uri (pypi-uri "pytest-astropy-header" version))
  270. (sha256
  271. (base32 "1y87agr324p6x5gvhziymxjlw54pyn4gqnd49papbl941djpkp5g"))))
  272. (build-system python-build-system)
  273. (native-inputs
  274. `(("pytest" ,python-pytest)
  275. ("setuptools-scm" ,python-setuptools-scm)))
  276. (home-page "https://www.astropy.org/")
  277. (synopsis
  278. "Pytest plugin adding diagnostic data to the header of the test output")
  279. (description
  280. "This plugin package provides a way to include information about the system,
  281. Python installation, and select dependencies in the header of the output when
  282. running pytest. It can be used with packages that are not affiliated with the
  283. Astropy project, but is optimized for use with astropy-related projects.")
  284. (license license:bsd-3)))
  285. (define-public python-pytest-astropy
  286. (package
  287. (name "python-pytest-astropy")
  288. (version "0.8.0")
  289. (source
  290. (origin
  291. (method url-fetch)
  292. (uri (pypi-uri "pytest-astropy" version))
  293. (sha256
  294. (base32 "18j6z6y2fvykmcs5z0mldhhaxxn6wzpnhlm2ps7m8r5z5kmh1631"))))
  295. (build-system python-build-system)
  296. (arguments
  297. ;; No tests provided
  298. '(#:tests? #f))
  299. (native-inputs
  300. `(("attrs" ,python-attrs)
  301. ("hypothesis" ,python-hypothesis)
  302. ("pytest" ,python-pytest)
  303. ("pytest-arraydiff" ,python-pytest-arraydiff)
  304. ("pytest-astropy-header" ,python-pytest-astropy-header)
  305. ("pytest-cov" ,python-pytest-cov)
  306. ("pytest-doctestplus" ,python-pytest-doctestplus)
  307. ("pytest-filter-subpackage" ,python-pytest-filter-subpackage)
  308. ("pytest-mock" ,python-pytest-mock)
  309. ("pytest-openfiles" ,python-pytest-openfiles)
  310. ("pytest-remotedata" ,python-pytest-remotedata)
  311. ("setuptools-scm" ,python-setuptools-scm)))
  312. (home-page "https://github.com/astropy/pytest-astropy")
  313. (synopsis
  314. "Metapackage for all the testing machinery used by the Astropy Project")
  315. (description
  316. "This is a meta-package that pulls in the dependencies that are used by
  317. astropy related packages.")
  318. (license license:bsd-3)))
  319. (define-public python-pytest-arraydiff
  320. (package
  321. (name "python-pytest-arraydiff")
  322. (version "0.3")
  323. (source
  324. (origin
  325. (method url-fetch)
  326. (uri (pypi-uri "pytest-arraydiff" version))
  327. (sha256
  328. (base32 "05bcvhh2ycxa35znl8b3l9vkcmx7vwm5c3fpakbpw46c7vsn4bfy"))))
  329. (build-system python-build-system)
  330. (arguments
  331. ;; Tests require python-astropy, which itself requires this package.
  332. ;; Disable tests to avoid the circular dependency problem.
  333. '(#:tests? #f))
  334. (propagated-inputs
  335. `(("python-numpy" ,python-numpy)
  336. ("python-six" ,python-six)))
  337. (home-page "https://github.com/astropy/pytest-arraydiff")
  338. (synopsis "Pytest plugin to help with comparing array output from tests")
  339. (description
  340. "This is a py.test plugin to facilitate the generation and comparison of
  341. data arrays produced during tests, in particular in cases where the arrays
  342. are too large to conveniently hard-code them in the tests.")
  343. (license license:bsd-3)))
  344. (define-public python-pytest-doctestplus
  345. (package
  346. (name "python-pytest-doctestplus")
  347. (version "0.7.0")
  348. (source
  349. (origin
  350. (method url-fetch)
  351. (uri (pypi-uri "pytest-doctestplus" version))
  352. (sha256
  353. (base32 "1ai9kvd7xbq2jg2h8gmkb8lqzyrxvdh4zg3vxndg149iwd1hyi7d"))))
  354. (build-system python-build-system)
  355. (arguments
  356. '(#:phases
  357. (modify-phases %standard-phases
  358. (replace 'check
  359. (lambda* (#:key inputs outputs #:allow-other-keys)
  360. ;; Make the installed plugin discoverable by Pytest.
  361. (add-installed-pythonpath inputs outputs)
  362. (invoke "pytest" "-vv"))))))
  363. (native-inputs
  364. `(("python-pytest" ,python-pytest)))
  365. (home-page "https://github.com/astropy/pytest-doctestplus")
  366. (synopsis "Pytest plugin with advanced doctest features")
  367. (description
  368. "This package contains a plugin for the Pytest framework that provides
  369. advanced doctest support and enables the testing of reStructuredText files.")
  370. (license license:bsd-3)))
  371. (define-public python-pytest-filter-subpackage
  372. (package
  373. (name "python-pytest-filter-subpackage")
  374. (version "0.1.1")
  375. (source
  376. (origin
  377. (method url-fetch)
  378. (uri (pypi-uri "pytest-filter-subpackage" version))
  379. (sha256
  380. (base32 "1s4s2kd31yc65rfvl4xhy8xx806xhy59kc7668h6b6wq88xgrn5p"))))
  381. (build-system python-build-system)
  382. (arguments
  383. '(;; One test is failing. There's an issue reported upstream. See
  384. ;; https://github.com/astropy/pytest-filter-subpackage/issues/3.
  385. ;; Disable it for now.
  386. #:phases
  387. (modify-phases %standard-phases
  388. (replace 'check
  389. (lambda* (#:key inputs outputs #:allow-other-keys)
  390. ;; Make the installed plugin discoverable by Pytest.
  391. (add-installed-pythonpath inputs outputs)
  392. (invoke "pytest" "-vv" "-k" "not test_with_rst"))))))
  393. (native-inputs
  394. `(("python-pytest" ,python-pytest)
  395. ("python-pytest-cov" ,python-pytest-cov)
  396. ("python-pytest-doctestplus"
  397. ,python-pytest-doctestplus)))
  398. (home-page "https://github.com/astropy/pytest-filter-subpackage")
  399. (synopsis "Pytest plugin for filtering based on sub-packages")
  400. (description
  401. "This package contains a simple plugin for the pytest framework that
  402. provides a shortcut to testing all code and documentation for a given
  403. sub-package.")
  404. (license license:bsd-3)))
  405. (define-public python-pytest-helpers-namespace
  406. (package
  407. (name "python-pytest-helpers-namespace")
  408. (version "2021.3.24")
  409. (source
  410. (origin
  411. (method url-fetch)
  412. (uri (pypi-uri "pytest-helpers-namespace" version))
  413. (sha256
  414. (base32
  415. "0pyj2d45zagmzlajzqdnkw5yz8k49pkihbydsqkzm413qnkzb38q"))))
  416. (build-system python-build-system)
  417. (arguments
  418. '(#:phases
  419. (modify-phases %standard-phases
  420. (replace 'check
  421. (lambda* (#:key inputs outputs #:allow-other-keys)
  422. ;; Make the installed plugin discoverable by Pytest.
  423. (add-installed-pythonpath inputs outputs)
  424. (invoke "pytest" "-vv"))))))
  425. (native-inputs
  426. `(("python-pytest" ,python-pytest)
  427. ("python-setuptools" ,python-setuptools) ; needs setuptools >= 50.3.2
  428. ("python-setuptools-scm" ,python-setuptools-scm)
  429. ("python-setuptools-declarative-requirements"
  430. ,python-setuptools-declarative-requirements)))
  431. (home-page "https://github.com/saltstack/pytest-helpers-namespace")
  432. (synopsis "Pytest Helpers Namespace Plugin")
  433. (description "Pytest Helpers Namespace Plugin provides a helpers pytest
  434. namespace which can be used to register helper functions without requiring
  435. someone to import them in their actual tests to use them.")
  436. (license license:asl2.0)))
  437. (define-public python-pytest-openfiles
  438. (package
  439. (name "python-pytest-openfiles")
  440. (version "0.5.0")
  441. (source
  442. (origin
  443. (method url-fetch)
  444. (uri (pypi-uri "pytest-openfiles" version))
  445. (sha256
  446. (base32 "0n0a7fdc9m86360y96l23fvdmd6rw04bl6h5xqgl9qxfv08jk70p"))))
  447. (build-system python-build-system)
  448. (arguments
  449. '(#:phases
  450. (modify-phases %standard-phases
  451. (replace 'check
  452. (lambda* (#:key inputs outputs #:allow-other-keys)
  453. ;; Make the installed plugin discoverable by Pytest.
  454. (add-installed-pythonpath inputs outputs)
  455. (invoke "pytest" "-vv"))))))
  456. (native-inputs
  457. `(("python-setuptools-scm" ,python-setuptools-scm)
  458. ("python-pytest" ,python-pytest)))
  459. (propagated-inputs
  460. `(("python-psutil" ,python-psutil)))
  461. (home-page "https://github.com/astropy/pytest-openfiles")
  462. (synopsis "Pytest plugin for detecting inadvertent open file handles")
  463. (description
  464. "This package provides a plugin for the pytest framework that allows
  465. developers to detect whether any file handles or other file-like objects
  466. were inadvertently left open at the end of a unit test.")
  467. (license license:bsd-3)))
  468. (define-public python-pytest-remotedata
  469. (package
  470. (name "python-pytest-remotedata")
  471. (version "0.3.2")
  472. (source
  473. (origin
  474. (method url-fetch)
  475. (uri (pypi-uri "pytest-remotedata" version))
  476. (sha256
  477. (base32 "1h6g6shib6z07azf12rnsa053470ggbd7hy3bnbw8nf3nza5h372"))))
  478. (build-system python-build-system)
  479. (arguments
  480. '(#:phases
  481. (modify-phases %standard-phases
  482. (replace 'check
  483. (lambda* (#:key inputs outputs #:allow-other-keys)
  484. ;; Make the installed plugin discoverable by Pytest.
  485. (add-installed-pythonpath inputs outputs)
  486. (invoke "pytest" "-vv" "-k"
  487. (string-append
  488. ;; These tests require internet access. Disable them.
  489. "not test_default_behavior"
  490. " and not test_strict_with_decorator")))))))
  491. (native-inputs
  492. `(("python-pytest" ,python-pytest)))
  493. (propagated-inputs
  494. `(("python-six" ,python-six)))
  495. (home-page "https://github.com/astropy/pytest-remotedata")
  496. (synopsis "Pytest plugin for controlling remote data access")
  497. (description
  498. "This package provides a plugin for the Pytest framework that allows
  499. developers to control unit tests that require access to data from the
  500. internet.")
  501. (license license:bsd-3)))
  502. (define-public python-pytest-mpl
  503. (package
  504. (name "python-pytest-mpl")
  505. (version "0.11")
  506. (source
  507. (origin
  508. (method url-fetch)
  509. (uri (pypi-uri "pytest-mpl" version))
  510. (sha256
  511. (base32 "1km202c1s5kcn52fx0266p06qb34va3warcby594dh6vixxa9i96"))))
  512. (build-system python-build-system)
  513. (arguments
  514. '(#:phases
  515. (modify-phases %standard-phases
  516. (replace 'check
  517. (lambda _
  518. (invoke "pytest" "-vv"))))))
  519. (native-inputs
  520. `(("python-pytest" ,python-pytest)))
  521. (propagated-inputs
  522. `(("python-matplotlib" ,python-matplotlib)
  523. ("python-nose" ,python-nose)
  524. ("python-pillow" ,python-pillow)))
  525. (home-page "https://github.com/matplotlib/pytest-mpl")
  526. (synopsis "Pytest plugin to help with testing figures output from Matplotlib")
  527. (description
  528. "This is a plugin to facilitate image comparison for Matplotlib figures
  529. in Pytest.")
  530. (license license:bsd-3)))
  531. (define-public python-covdefaults
  532. (package
  533. (name "python-covdefaults")
  534. (version "1.1.0")
  535. (source
  536. (origin
  537. ;; The PyPI tarball does not include tests.
  538. (method git-fetch)
  539. (uri (git-reference
  540. (url "https://github.com/asottile/covdefaults")
  541. (commit (string-append "v" version))))
  542. (file-name (git-file-name name version))
  543. (sha256
  544. (base32 "11a24c0wzv01n55fy4kdpnyqna4m9k0mp58kmhiaks34xw4k37hq"))))
  545. (build-system python-build-system)
  546. (arguments
  547. `(#:phases
  548. (modify-phases %standard-phases
  549. (replace 'check
  550. (lambda _
  551. (invoke "pytest" "-vv"))))))
  552. (native-inputs
  553. `(("python-coverage" ,python-coverage)
  554. ("python-pytest" ,python-pytest)))
  555. (home-page "https://github.com/asottile/covdefaults")
  556. (synopsis "Coverage plugin to provide opinionated default settings")
  557. (description
  558. "Covdefaults is a coverage plugin to provide opinionated default
  559. settings.")
  560. (license license:expat)))
  561. (define-public python-pytest-vcr
  562. ;; This commit fixes integration with pytest-5
  563. (let ((commit "4d6c7b3e379a6a7cba0b8f9d20b704dc976e9f05")
  564. (revision "1"))
  565. (package
  566. (name "python-pytest-vcr")
  567. (version (git-version "1.0.2" revision commit))
  568. (source
  569. (origin
  570. (method git-fetch)
  571. (uri (git-reference
  572. (url "https://github.com/ktosiek/pytest-vcr")
  573. (commit commit)))
  574. (file-name (git-file-name name version))
  575. (sha256
  576. (base32
  577. "1yk988zi0la6zpcm3fff0mxf942di2jiymrfqas19nyngj5ygaqs"))))
  578. (build-system python-build-system)
  579. (arguments
  580. `(#:phases
  581. (modify-phases %standard-phases
  582. (replace 'check
  583. (lambda* (#:key inputs outputs #:allow-other-keys)
  584. (add-installed-pythonpath inputs outputs)
  585. (invoke "pytest" "tests/"))))))
  586. (propagated-inputs
  587. `(("python-pytest" ,python-pytest)
  588. ("python-vcrpy" ,python-vcrpy)))
  589. (home-page "https://github.com/ktosiek/pytest-vcr")
  590. (synopsis "Plugin for managing VCR.py cassettes")
  591. (description
  592. "Plugin for managing VCR.py cassettes.")
  593. (license license:expat))))
  594. (define-public python-pytest-checkdocs
  595. (package
  596. (name "python-pytest-checkdocs")
  597. (version "1.2.2")
  598. (source
  599. (origin
  600. (method url-fetch)
  601. (uri (pypi-uri "pytest-checkdocs" version))
  602. (sha256
  603. (base32 "0j6j1gvj6x451y3qsx4xbaq9p1w9gg3mwk7n0w80cy8vdyjkngb0"))))
  604. (build-system python-build-system)
  605. (propagated-inputs
  606. `(("python-docutils" ,python-docutils)
  607. ("python-importlib-metadata" ,python-importlib-metadata)
  608. ("python-more-itertools" ,python-more-itertools)))
  609. (native-inputs
  610. `(("python-setuptools-scm" ,python-setuptools-scm)))
  611. (home-page "https://github.com/jaraco/pytest-checkdocs")
  612. (synopsis "Check the README when running tests")
  613. (description
  614. "This package provides a pytest plugin that checks the long description
  615. of the project to ensure it renders properly.")
  616. (license license:expat)))
  617. (define-public python-re-assert
  618. (package
  619. (name "python-re-assert")
  620. (version "1.1.0")
  621. (source
  622. (origin
  623. ;; There are no tests in the PyPI tarball.
  624. (method git-fetch)
  625. (uri (git-reference
  626. (url "https://github.com/asottile/re-assert")
  627. (commit (string-append "v" version))))
  628. (file-name (git-file-name name version))
  629. (sha256
  630. (base32 "1rssq4wpqmx1c17hjfx5l3sn3zmnlz9jffddiqrs4f6h7m6cadai"))))
  631. (build-system python-build-system)
  632. (arguments
  633. `(#:phases
  634. (modify-phases %standard-phases
  635. (replace 'check
  636. (lambda _
  637. (invoke "pytest" "-vv"))))))
  638. (native-inputs
  639. `(("python-covdefaults" ,python-covdefaults)
  640. ("python-coverage" ,python-coverage)
  641. ("python-pytest" ,python-pytest)))
  642. (propagated-inputs
  643. `(("python-regex" ,python-regex)))
  644. (home-page "https://github.com/asottile/re-assert")
  645. (synopsis "Show where your regex match assertion failed")
  646. (description
  647. "@code{re-assert} provides a helper class to make assertions of regexes
  648. simpler.")
  649. (license license:expat)))
  650. (define-public python-pytest-trio
  651. (package
  652. (name "python-pytest-trio")
  653. (version "0.6.0")
  654. (source
  655. (origin
  656. (method url-fetch)
  657. (uri (pypi-uri "pytest-trio" version))
  658. (sha256
  659. (base32 "1zm8didm9h5jkqhghl9bvqs7kr7sjci282c7grhk6yhpzn8a9w4v"))))
  660. (build-system python-build-system)
  661. (arguments
  662. `(#:phases
  663. (modify-phases %standard-phases
  664. (replace 'check
  665. (lambda* (#:key inputs outputs #:allow-other-keys)
  666. (add-installed-pythonpath inputs outputs)
  667. (invoke "pytest" "-W" "error" "-ra" "-v" "--pyargs"
  668. "pytest_trio" "--verbose" "--cov"))))))
  669. (native-inputs
  670. `(("python-hypothesis" ,python-hypothesis)
  671. ("python-pytest" ,python-pytest)
  672. ("python-pytest-cov" ,python-pytest-cov)))
  673. (propagated-inputs
  674. `(("python-trio" ,python-trio)))
  675. (home-page "https://github.com/python-trio/pytest-trio")
  676. (synopsis "Pytest plugin for trio")
  677. (description
  678. "This is a pytest plugin to help you test projects that use Trio, a
  679. friendly library for concurrency and async I/O in Python.")
  680. ;; Either license applies.
  681. (license (list license:expat license:asl2.0))))
  682. (define-public python-pytest-flake8
  683. (package
  684. (name "python-pytest-flake8")
  685. (version "1.0.7")
  686. (source
  687. (origin
  688. (method url-fetch)
  689. (uri (pypi-uri "pytest-flake8" version))
  690. (sha256
  691. (base32
  692. "0syx68xk5ss3hgp3nr2y122w0fgkzr5936ghsqrkymh3m5hrf9gh"))))
  693. (build-system python-build-system)
  694. (propagated-inputs
  695. `(("python-flake8" ,python-flake8)))
  696. (native-inputs
  697. `(("python-pytest" ,python-pytest)))
  698. (home-page "https://github.com/tholo/pytest-flake8")
  699. (synopsis "Pytest plugin to check FLAKE8 requirements")
  700. (description
  701. "This package provides a pytest plugin for efficiently checking PEP8
  702. compliance.")
  703. (license license:bsd-3)))
  704. (define-public python-pytest-isort
  705. (package
  706. (name "python-pytest-isort")
  707. (version "2.0.0")
  708. (source
  709. (origin
  710. (method url-fetch)
  711. (uri (pypi-uri "pytest-isort" version))
  712. (sha256
  713. (base32 "05wi28zlqk3jafpjal8j523y5jcsx3xl3id9rx93qfjgkif8q6l2"))))
  714. (build-system python-build-system)
  715. (arguments
  716. `(#:phases
  717. (modify-phases %standard-phases
  718. (replace 'check
  719. (lambda* (#:key tests? #:allow-other-keys)
  720. (when tests?
  721. (invoke "pytest")))))))
  722. (propagated-inputs
  723. `(("python-isort" ,python-isort)
  724. ("python-pytest" ,python-pytest)))
  725. (native-inputs
  726. `(("python-mock" ,python-mock)))
  727. (home-page "https://github.com/moccu/pytest-isort/")
  728. (synopsis "Pytest plugin to check import ordering using isort")
  729. (description
  730. "This package provides a pytest plugin to check import ordering using
  731. isort.")
  732. (license license:bsd-3)))
  733. (define-public python-pytest-shutil
  734. (package
  735. (name "python-pytest-shutil")
  736. (version "1.7.0")
  737. (source
  738. (origin
  739. (method url-fetch)
  740. (uri (pypi-uri "pytest-shutil" version))
  741. (sha256
  742. (base32
  743. "0q8j0ayzmnvlraml6i977ybdq4xi096djhf30n2m1rvnvrhm45nq"))))
  744. (build-system python-build-system)
  745. (arguments
  746. `(#:phases
  747. (modify-phases %standard-phases
  748. (add-after 'unpack 'patch-tests
  749. (lambda _
  750. (mkdir "/tmp/bin")
  751. (substitute* "tests/integration/test_cmdline_integration.py"
  752. (("dirname = '/bin'")
  753. "dirname = '/tmp/bin'")
  754. (("bindir = os.path.realpath\\('/bin'\\)")
  755. "bindir = os.path.realpath('/tmp/bin')"))
  756. #t)))))
  757. (propagated-inputs
  758. `(("python-contextlib2" ,python-contextlib2)
  759. ("python-execnet" ,python-execnet)
  760. ("python-pathpy" ,python-pathpy)
  761. ("python-termcolor" ,python-termcolor)))
  762. (native-inputs
  763. `(("python-mock" ,python-mock)
  764. ("python-pytest" ,python-pytest)
  765. ("python-setuptools-git" ,python-setuptools-git)))
  766. (home-page "https://github.com/manahl/pytest-plugins")
  767. (synopsis "Assorted shell and environment tools for py.test")
  768. (description
  769. "This package provides assorted shell and environment tools for the
  770. py.test testing framework.")
  771. (license license:expat)))
  772. (define-public python-pytest-fixture-config
  773. (package
  774. (name "python-pytest-fixture-config")
  775. (version "1.7.0")
  776. (source
  777. (origin
  778. (method url-fetch)
  779. (uri (pypi-uri "pytest-fixture-config" version))
  780. (sha256
  781. (base32
  782. "13i1qpz22w3x4dmw8vih5jdnbqfqvl7jiqs0dg764s0zf8bp98a1"))))
  783. (build-system python-build-system)
  784. (native-inputs
  785. `(("python-pytest" ,python-pytest)
  786. ("python-setuptools-git" ,python-setuptools-git)))
  787. (home-page "https://github.com/manahl/pytest-plugins")
  788. (synopsis "Fixture configuration utils for py.test")
  789. (description
  790. "This package provides fixture configuration utilities for the py.test
  791. testing framework.")
  792. (license license:expat)))
  793. (define-public python-pytest-virtualenv
  794. (package
  795. (name "python-pytest-virtualenv")
  796. (version "1.7.0")
  797. (source
  798. (origin
  799. (method url-fetch)
  800. (uri (pypi-uri "pytest-virtualenv" version))
  801. (sha256
  802. (base32
  803. "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12"))))
  804. (build-system python-build-system)
  805. (arguments
  806. `(#:phases
  807. (modify-phases %standard-phases
  808. ;; Reference the virtualenv executable directly, to avoid the need
  809. ;; for PYTHONPATH, which gets cleared when instantiating a new
  810. ;; virtualenv with pytest-virtualenv.
  811. (add-after 'unpack 'patch-virtualenv-executable
  812. (lambda* (#:key inputs #:allow-other-keys)
  813. (let* ((virtualenv (assoc-ref inputs "python-virtualenv"))
  814. (virtualenv-bin (string-append virtualenv
  815. "/bin/virtualenv")))
  816. (substitute* "pytest_virtualenv.py"
  817. (("^DEFAULT_VIRTUALENV_FIXTURE_EXECUTABLE.*$")
  818. (format #f "DEFAULT_VIRTUALENV_FIXTURE_EXECUTABLE = '~a'"
  819. virtualenv-bin)))
  820. #t))))))
  821. (propagated-inputs
  822. `(("python-pytest-shutil" ,python-pytest-shutil)
  823. ("python-pytest-fixture-config" ,python-pytest-fixture-config)))
  824. (inputs
  825. `(("python-virtualenv" ,python-virtualenv)))
  826. (native-inputs
  827. `(("python-mock" ,python-mock)
  828. ("python-pytest" ,python-pytest)
  829. ("python-setuptools-git" ,python-setuptools-git)))
  830. (home-page "https://github.com/manahl/pytest-plugins")
  831. (synopsis "Virtualenv fixture for py.test")
  832. (description "This package provides a virtualenv fixture for the py.test
  833. framework.")
  834. (license license:expat)))
  835. (define-public python-pytest-pycodestyle
  836. (package
  837. (name "python-pytest-pycodestyle")
  838. (version "2.0.0") ;later versions require python-pytest~=5.4
  839. (source
  840. (origin
  841. (method url-fetch)
  842. (uri (pypi-uri "pytest-pycodestyle" version))
  843. (sha256
  844. (base32
  845. "02i5gl7pm9cwxk15sn29inz3n8flpj1r3p1l110h43f2na5w8h7z"))))
  846. (build-system python-build-system)
  847. (propagated-inputs
  848. `(("python-pycodestyle" ,python-pycodestyle)))
  849. (native-inputs
  850. `(("python-pytest" ,python-pytest)))
  851. (home-page "https://github.com/henry0312/pytest-pycodestyle")
  852. (synopsis "Pytest plugin to run pycodestyle")
  853. (description "This package provides a plugin to run @code{pycodestyle}
  854. for the @code{pytest} framework.")
  855. (license license:expat)))
  856. (define-public python-pytest-benchmark
  857. (package
  858. (name "python-pytest-benchmark")
  859. (version "3.2.3")
  860. (source
  861. (origin
  862. (method url-fetch)
  863. (uri (pypi-uri "pytest-benchmark" version))
  864. (sha256
  865. (base32
  866. "0a4mpb4j73dsyk47hd1prrjpfk4r458s102cn80rf253jg818hxd"))))
  867. (build-system python-build-system)
  868. (propagated-inputs
  869. `(("python-py-cpuinfo" ,python-py-cpuinfo)))
  870. (native-inputs
  871. `(("python-pathlib2" ,python-pathlib2)
  872. ("python-pytest" ,python-pytest)))
  873. (home-page "https://github.com/ionelmc/pytest-benchmark")
  874. (synopsis "Pytest fixture for benchmarking code")
  875. (description
  876. "This package provides a pytest fixture that will group the tests into
  877. rounds that are calibrated to the chosen timer.")
  878. (license license:bsd-2)))
  879. (define-public python-pytest-xvfb
  880. (package
  881. (name "python-pytest-xvfb")
  882. (version "2.0.0")
  883. (source
  884. (origin
  885. (method url-fetch)
  886. (uri (pypi-uri "pytest-xvfb" version))
  887. (sha256
  888. (base32 "1kyq5rg27dsnj7dc6x9y7r8vwf8rc88y2ppnnw6r96alw0nn9fn4"))))
  889. (build-system python-build-system)
  890. (arguments
  891. `(#:test-target "pytest"
  892. #:phases
  893. (modify-phases %standard-phases
  894. (add-before 'build 'prepare-tests
  895. (lambda _
  896. (system "Xvfb &")
  897. (setenv "DISPLAY" ":0")
  898. ;; This test is meant to run on Windows.
  899. (delete-file "tests/test_xvfb_windows.py")
  900. #t)))))
  901. (native-inputs
  902. `(("python-pytest" ,python-pytest)
  903. ("python-pytest-runner" ,python-pytest-runner)
  904. ("xorg-server" ,xorg-server-for-tests)))
  905. (propagated-inputs
  906. `(("python-pyvirtualdisplay"
  907. ,python-pyvirtualdisplay)))
  908. (home-page "https://github.com/The-Compiler/pytest-xvfb")
  909. (synopsis "Pytest plugin to run Xvfb for tests")
  910. (description
  911. "This package provides a Pytest plugin to run Xvfb for tests.")
  912. (license license:expat)))
  913. (define-public python-pytest-services
  914. (package
  915. (name "python-pytest-services")
  916. (version "1.3.1")
  917. (source
  918. (origin
  919. (method url-fetch)
  920. (uri (pypi-uri "pytest-services" version))
  921. (sha256
  922. (base32
  923. "0b2zfv04w6m3gp2v44ifdhx22vcji069qnn95ry3zcyxib7cjnq3"))))
  924. (build-system python-build-system)
  925. (arguments '(#:tests? #f)) ; Tests not included in release tarball.
  926. (propagated-inputs
  927. `(("python-psutil" ,python-psutil)
  928. ("python-requests" ,python-requests)))
  929. (native-inputs
  930. `(("python-pytest" ,python-pytest)))
  931. (home-page "https://github.com/pytest-dev/pytest-services")
  932. (synopsis "Services plugin for pytest testing framework")
  933. (description
  934. "This plugin provides a set of fixtures and utility functions to start
  935. service processes for your tests with pytest.")
  936. (license license:expat)))
  937. (define-public python-pytest-toolbox
  938. (package
  939. (name "python-pytest-toolbox")
  940. (version "0.4")
  941. (source
  942. (origin
  943. ;; No tests in the PyPI tarball.
  944. (method git-fetch)
  945. (uri (git-reference
  946. (url "https://github.com/samuelcolvin/pytest-toolbox")
  947. (commit (string-append "v" version))))
  948. (file-name (git-file-name name version))
  949. (sha256
  950. (base32 "1wqkr3g5gmqdxmhzfsxbwy8pm3cadaj6a8cxq58w9bacly4hqbh0"))))
  951. (build-system python-build-system)
  952. (arguments
  953. '(#:phases
  954. (modify-phases %standard-phases
  955. (replace 'check
  956. (lambda* (#:key inputs outputs #:allow-other-keys)
  957. ;; Make the installed plugin discoverable by Pytest.
  958. (add-installed-pythonpath inputs outputs)
  959. (invoke "pytest" "-vv"))))))
  960. (native-inputs
  961. `(("python-coverage" ,python-coverage)
  962. ("python-docutils" ,python-docutils)
  963. ("python-flake8" ,python-flake8)
  964. ("python-isort" ,python-isort)
  965. ("python-pydantic" ,python-pydantic)
  966. ("python-pyflakes" ,python-pyflakes)
  967. ("python-pygments" ,python-pygments)
  968. ("python-pytest" ,python-pytest)
  969. ("python-pytest-cov" ,python-pytest-cov)
  970. ("python-pytest-isort" ,python-pytest-isort)
  971. ("python-pytest-mock" ,python-pytest-mock)
  972. ("python-pytest-sugar" ,python-pytest-sugar)))
  973. (home-page "https://github.com/samuelcolvin/pytest-toolbox")
  974. (synopsis "Numerous useful plugins for Pytest")
  975. (description
  976. "Pytest Toolbox contains many useful plugins for Pytest. Among them are
  977. new fixtures, new methods and new comparison objects.")
  978. (license license:expat)))
  979. (define-public python-pytest-aiohttp
  980. (package
  981. (name "python-pytest-aiohttp")
  982. (version "0.3.0")
  983. (source
  984. (origin
  985. (method url-fetch)
  986. (uri (pypi-uri "pytest-aiohttp" version))
  987. (sha256
  988. (base32
  989. "0kx4mbs9bflycd8x9af0idcjhdgnzri3nw1qb0vpfyb3751qaaf9"))))
  990. (build-system python-build-system)
  991. (native-inputs
  992. `(("python-pytest" ,python-pytest)))
  993. (propagated-inputs
  994. `(("python-aiohttp" ,python-aiohttp)))
  995. (home-page "https://github.com/aio-libs/pytest-aiohttp/")
  996. (synopsis "Pytest plugin for aiohttp support")
  997. (description "This package provides a pytest plugin for aiohttp support.")
  998. (license license:asl2.0)))
  999. (define-public python-nbval
  1000. (package
  1001. (name "python-nbval")
  1002. (version "0.9.6")
  1003. (source
  1004. (origin
  1005. (method url-fetch)
  1006. (uri (pypi-uri "nbval" version))
  1007. (sha256
  1008. (base32 "0h3xrnw0mj1srigrx2rfnd73h8s0xjycclmjs0vx7qkfyqpcvvyg"))))
  1009. (build-system python-build-system)
  1010. (arguments
  1011. `(#:phases
  1012. (modify-phases %standard-phases
  1013. (add-before 'check 'fix-test
  1014. (lambda _
  1015. ;; This test fails because of a mismatch in the output of LaTeX
  1016. ;; equation environments. Seems OK to skip.
  1017. (delete-file "tests/ipynb-test-samples/test-latex-pass-correctouput.ipynb")
  1018. #t))
  1019. (replace 'check
  1020. (lambda* (#:key inputs outputs #:allow-other-keys)
  1021. (add-installed-pythonpath inputs outputs)
  1022. (invoke "pytest" "-vv" "-k"
  1023. (string-append
  1024. ;; This only works with Pytest < 5.
  1025. "not nbdime_reporter"
  1026. ;; https://github.com/computationalmodelling/nbval/pull/148.
  1027. " and not test_timeouts")))))))
  1028. (native-inputs
  1029. `(("python-pytest" ,python-pytest)
  1030. ("python-pytest-cov" ,python-pytest-cov)
  1031. ("python-sympy" ,python-sympy)))
  1032. (propagated-inputs
  1033. `(("python-ipykernel" ,python-ipykernel)
  1034. ("python-jupyter-client" ,python-jupyter-client)
  1035. ("python-nbformat" ,python-nbformat)
  1036. ("python-six" ,python-six)))
  1037. (home-page "https://github.com/computationalmodelling/nbval")
  1038. (synopsis "Pytest plugin to validate Jupyter notebooks")
  1039. (description
  1040. "This plugin adds functionality to Pytest to recognise and collect Jupyter
  1041. notebooks. The intended purpose of the tests is to determine whether execution
  1042. of the stored inputs match the stored outputs of the @file{.ipynb} file. Whilst
  1043. also ensuring that the notebooks are running without errors.")
  1044. (license license:bsd-3)))
  1045. (define-public python-pytest-flask
  1046. (package
  1047. (name "python-pytest-flask")
  1048. (version "1.0.0")
  1049. (source
  1050. (origin
  1051. (method url-fetch)
  1052. (uri (pypi-uri "pytest-flask" version))
  1053. (sha256
  1054. (base32
  1055. "1hln7mwgdzfi5ma0kqfsi768l7p24jhkw8l0imhifwy08nh7hmjd"))))
  1056. (build-system python-build-system)
  1057. (native-inputs
  1058. `(("python-flask" ,python-flask)
  1059. ("python-pytest" ,python-pytest)
  1060. ("python-setuptools-scm" ,python-setuptools-scm)
  1061. ("python-werkzeug" ,python-werkzeug)))
  1062. (home-page "https://github.com/pytest-dev/pytest-flask")
  1063. (synopsis "Pytest fixtures to test Flask applications")
  1064. (description
  1065. "This pytest plugin provides fixtures to simplify Flask app testing.")
  1066. (license license:expat)))
  1067. (define-public python-pytest-console-scripts
  1068. (package
  1069. (name "python-pytest-console-scripts")
  1070. (version "1.2.0")
  1071. (source
  1072. (origin
  1073. (method url-fetch)
  1074. (uri (pypi-uri "pytest-console-scripts" version))
  1075. (sha256
  1076. (base32
  1077. "073l2cz11013dl30zjr575ms78j9b2bsbdl1w0gmig37spbkh8aa"))))
  1078. (build-system python-build-system)
  1079. (arguments
  1080. `(#:phases
  1081. (modify-phases %standard-phases
  1082. (replace 'check
  1083. (lambda* (#:key inputs outputs tests? #:allow-other-keys)
  1084. (when tests?
  1085. (add-installed-pythonpath inputs outputs)
  1086. (invoke "pytest" "--verbose"
  1087. ;; This one test fails because of PATH assumptions
  1088. "-k" "not test_elsewhere_in_the_path")))))))
  1089. (propagated-inputs
  1090. `(("python-mock" ,python-mock)
  1091. ("python-pytest" ,python-pytest)))
  1092. (native-inputs
  1093. `(("python-setuptools-scm" ,python-setuptools-scm)))
  1094. (home-page "https://github.com/kvas-it/pytest-console-scripts")
  1095. (synopsis "Pytest plugin for testing console scripts")
  1096. (description
  1097. "This package provides a pytest plugin for testing console scripts.")
  1098. (license license:expat)))
  1099. (define-public python-pytest-tornasync
  1100. (package
  1101. (name "python-pytest-tornasync")
  1102. (version "0.6.0.post2")
  1103. (source
  1104. (origin
  1105. (method url-fetch)
  1106. (uri (pypi-uri "pytest-tornasync" version))
  1107. (sha256
  1108. (base32
  1109. "0pdyddbzppkfqwa7g17sdfl4w2v1hgsky78l8f4c1rx2a7cvd0fp"))))
  1110. (build-system python-build-system)
  1111. (arguments
  1112. `(#:tests? #false ; TODO: fails at "from test import MESSAGE, PAUSE_TIME"
  1113. #:phases
  1114. (modify-phases %standard-phases
  1115. (replace 'check
  1116. (lambda* (#:key inputs outputs tests? #:allow-other-keys)
  1117. (when tests?
  1118. (add-installed-pythonpath inputs outputs)
  1119. (invoke "pytest" "--verbose")))))))
  1120. (propagated-inputs
  1121. `(("python-pytest" ,python-pytest)
  1122. ("python-tornado" ,python-tornado)))
  1123. (home-page "https://github.com/eukaryote/pytest-tornasync")
  1124. (synopsis "Pytest plugin for testing Tornado code")
  1125. (description
  1126. "This package provides a simple pytest plugin that provides some helpful
  1127. fixtures for testing Tornado (version 5.0 or newer) apps and easy handling of
  1128. plain (undecoratored) native coroutine tests.")
  1129. (license license:expat)))
  1130. (define-public python-pytest-env
  1131. (package
  1132. (name "python-pytest-env")
  1133. (version "0.6.2")
  1134. (source
  1135. (origin
  1136. (method url-fetch)
  1137. (uri (pypi-uri "pytest-env" version))
  1138. (sha256
  1139. (base32 "1hl0ln0cicdid4qjk7mv90lw9xkb0v71dlj7q7rn89vzxxm9b53y"))))
  1140. (build-system python-build-system)
  1141. (native-inputs
  1142. `(("python-pytest" ,python-pytest)))
  1143. (home-page "https://github.com/MobileDynasty/pytest-env")
  1144. (synopsis "Pytest plugin that allows you to add environment variables")
  1145. (description
  1146. "This is a @code{py.test} plugin that enables you to set environment
  1147. variables in the @file{pytest.ini} file.")
  1148. (license license:expat)))
  1149. (define-public python-pyux
  1150. (package
  1151. (name "python-pyux")
  1152. (version "0.0.6")
  1153. (source
  1154. (origin
  1155. (method url-fetch)
  1156. (uri (pypi-uri "pyux" version))
  1157. (sha256
  1158. (base32
  1159. "1i17xh4dy238ibrjdgh8vn78fk5q6dj37mcznpvdfzidj57js7ca"))))
  1160. (build-system python-build-system)
  1161. (arguments
  1162. `(#:tests? #f)) ;the mini test suite fails
  1163. (home-page "https://github.com/farizrahman4u/pyux")
  1164. (synopsis "Utility to check API integrity in Python libraries")
  1165. (description "The pyux utility detects API changes in Python
  1166. libraries.")
  1167. (license license:expat)))
  1168. (define-public python-pytest-qt
  1169. (package
  1170. (name "python-pytest-qt")
  1171. (version "3.3.0")
  1172. (source
  1173. (origin
  1174. (method url-fetch)
  1175. (uri (pypi-uri "pytest-qt" version))
  1176. (sha256
  1177. (base32 "09c9psfn3zigpaw1l1cmynpa3csxa49wc2ih5lzl24skdkw0njvi"))))
  1178. (build-system python-build-system)
  1179. (arguments
  1180. `(#:test-target "pytest"
  1181. #:phases
  1182. (modify-phases %standard-phases
  1183. (add-before 'check 'set-qpa
  1184. (lambda _
  1185. (setenv "QT_QPA_PLATFORM" "offscreen")
  1186. #t)))))
  1187. (propagated-inputs
  1188. `(("python-pyqt" ,python-pyqt)))
  1189. (native-inputs
  1190. `(("python-pytest" ,python-pytest)
  1191. ("python-pytest-runner" ,python-pytest-runner)
  1192. ("python-setuptools-scm" ,python-setuptools-scm)))
  1193. (home-page "https://github.com/pytest-dev/pytest-qt")
  1194. (synopsis "Pytest support for PyQt and PySide applications")
  1195. (description
  1196. "@code{pytest-qt} is a Pytest plugin that allows programmers to write
  1197. tests for PyQt5 and PySide2 applications.
  1198. The main usage is to use the @code{qtbot} fixture, responsible for handling
  1199. @code{qApp} creation as needed and provides methods to simulate user
  1200. interaction, like key presses and mouse clicks.")
  1201. (license license:expat)))
  1202. (define-public python-codacy-coverage
  1203. (package
  1204. (name "python-codacy-coverage")
  1205. (version "1.3.11")
  1206. (source
  1207. (origin
  1208. (method url-fetch)
  1209. (uri (pypi-uri "codacy-coverage" version))
  1210. (sha256
  1211. (base32
  1212. "1g0c0w56xdkmqb8slacyw5qhzrkp814ng3ddh2lkiij58y9m2imr"))))
  1213. (build-system python-build-system)
  1214. (arguments
  1215. `(#:tests? #f)); no tests
  1216. (propagated-inputs
  1217. `(("python-check-manifest" ,python-check-manifest)))
  1218. (home-page "https://github.com/codacy/python-codacy-coverage")
  1219. (synopsis "Codacy coverage reporter for Python")
  1220. (description "This package analyses Python test suites and reports how much
  1221. of the code is covered by them. This tool is part of the Codacy suite for
  1222. analysing code quality.")
  1223. (license license:expat)))
  1224. (define-public python-httmock
  1225. (package
  1226. (name "python-httmock")
  1227. (version "1.3.0")
  1228. (source
  1229. (origin
  1230. (method url-fetch)
  1231. (uri (pypi-uri "httmock" version))
  1232. (sha256
  1233. (base32
  1234. "1zj1fcm0n6f0wr9mr0hmlqz9430fnr5cdwd5jkcvq9j44bnsrfz0"))))
  1235. (build-system python-build-system)
  1236. (arguments
  1237. `(#:tests? #f)); no tests
  1238. (propagated-inputs
  1239. `(("python-requests" ,python-requests)))
  1240. (home-page "https://github.com/patrys/httmock")
  1241. (synopsis "Mocking library for requests.")
  1242. (description "This package provides a library for replying fake data to
  1243. Python software under test, when they make an HTTP query.")
  1244. (license license:asl2.0)))
  1245. (define-public python-atpublic
  1246. (package
  1247. (name "python-atpublic")
  1248. (version "1.0")
  1249. (source
  1250. (origin
  1251. (method url-fetch)
  1252. (uri (pypi-uri "atpublic" version))
  1253. (sha256
  1254. (base32
  1255. "0i3sbxkdlbb4560rrlmwwd5y4ps7k73lp4d8wnmd7ag9k426gjkx"))))
  1256. (build-system python-build-system)
  1257. (arguments
  1258. '(#:phases
  1259. (modify-phases %standard-phases
  1260. (add-before 'build 'enable-c-implementation
  1261. (lambda _
  1262. (setenv "ATPUBLIC_BUILD_EXTENSION" "yes")
  1263. #t))
  1264. (replace 'check
  1265. (lambda _
  1266. (invoke "python" "-m" "nose2" "-v"))))))
  1267. (native-inputs
  1268. `(("python-nose2" ,python-nose2)))
  1269. (home-page "https://public.readthedocs.io/")
  1270. (synopsis "@code{@@public} decorator for populating @code{__all__}")
  1271. (description
  1272. "This Python module adds a @code{@@public} decorator and function which
  1273. populates a module's @code{__all__} and optionally the module globals. With
  1274. it, the declaration of a name's public export semantics are not separated from
  1275. the implementation of that name.")
  1276. (license (list license:asl2.0
  1277. license:lgpl3)))) ; only for setup_helpers.py
  1278. (define-public python-mypy-extensions
  1279. (package
  1280. (name "python-mypy-extensions")
  1281. (version "0.4.3")
  1282. (source
  1283. (origin
  1284. (method url-fetch)
  1285. (uri (pypi-uri "mypy_extensions" version))
  1286. (sha256
  1287. (base32
  1288. "1a04qsk8hd1lqns8w1j7cr0vmvbhg450di5k1i16kqxkbf7q30id"))))
  1289. (build-system python-build-system)
  1290. (arguments `(#:tests? #f)); no tests
  1291. (home-page "https://github.com/python/mypy_extensions")
  1292. (synopsis "Experimental extensions for MyPy")
  1293. (description "The @code{python-mypy-extensions} module defines
  1294. experimental extensions to the standard @code{typing} module that are
  1295. supported by the MyPy typechecker.")
  1296. (license license:expat)))
  1297. (define-public python-mypy
  1298. (package
  1299. (name "python-mypy")
  1300. (version "0.790")
  1301. (source
  1302. (origin
  1303. ;; Because of https://github.com/python/mypy/issues/9584, the
  1304. ;; mypyc/analysis directory is missing in the PyPI archive, leading to
  1305. ;; test failures.
  1306. (method git-fetch)
  1307. (uri (git-reference
  1308. (url "https://github.com/python/mypy")
  1309. (commit (string-append "v" version))
  1310. ;; Fetch git submodules otherwise typeshed is not fetched.
  1311. ;; Typeshed is a collection of Python sources type annotation
  1312. ;; (data) files.
  1313. (recursive? #t)))
  1314. (file-name (git-file-name name version))
  1315. (sha256
  1316. (base32
  1317. "0zq3lpdf9hphcklk40wz444h8w3dkhwa12mqba5j9lmg11klnhz7"))))
  1318. (build-system python-build-system)
  1319. (arguments
  1320. `(#:phases
  1321. (modify-phases %standard-phases
  1322. (replace 'check
  1323. (lambda _
  1324. (invoke "pytest" "mypyc"))))))
  1325. (native-inputs
  1326. `(("python-attrs" ,python-attrs)
  1327. ("python-flake8" ,python-flake8)
  1328. ("python-flake8-bugbear" ,python-flake8-bugbear)
  1329. ("python-flake8-pyi" ,python-flake8-pyi)
  1330. ("python-importlib-metadata" ,python-importlib-metadata)
  1331. ("python-lxml" ,python-lxml)
  1332. ("python-psutil" ,python-psutil)
  1333. ("python-pytest" ,python-pytest)
  1334. ("python-pytest-cov" ,python-pytest-cov)
  1335. ("python-pytest-forked" ,python-pytest-forked)
  1336. ("python-pytest-xdist" ,python-pytest-xdist)
  1337. ("python-virtualenv" ,python-virtualenv)))
  1338. (propagated-inputs
  1339. `(("python-mypy-extensions" ,python-mypy-extensions)
  1340. ("python-typing-extensions" ,python-typing-extensions)
  1341. ("python-typed-ast" ,python-typed-ast)))
  1342. (home-page "http://www.mypy-lang.org/")
  1343. (synopsis "Static type checker for Python")
  1344. (description "Mypy is an optional static type checker for Python that aims
  1345. to combine the benefits of dynamic (or 'duck') typing and static typing. Mypy combines
  1346. the expressive power and convenience of Python with a powerful type system and
  1347. compile-time type checking. Mypy type checks standard Python programs; run them using
  1348. any Python VM with basically no runtime overhead.")
  1349. ;; Most of the code is under MIT license; Some files are under Python Software
  1350. ;; Foundation License version 2: stdlib-samples/*, mypyc/lib-rt/pythonsupport.h and
  1351. ;; mypyc/lib-rt/getargs.c
  1352. (license (list license:expat license:psfl))))
  1353. ;;; This variant exists to break a cycle between python-pylama and python-isort.
  1354. (define-public python-mypy-minimal
  1355. (hidden-package
  1356. (package
  1357. (inherit python-mypy)
  1358. (name "python-mypy-minimal")
  1359. (arguments
  1360. `(#:tests? #f
  1361. #:phases (modify-phases %standard-phases
  1362. ;; XXX: Fails with: "In procedure utime: No such file or
  1363. ;; directory".
  1364. (delete 'ensure-no-mtimes-pre-1980))))
  1365. (native-inputs '()))))
  1366. (define-public python-pylama
  1367. (package
  1368. (name "python-pylama")
  1369. (version "7.7.1")
  1370. (source
  1371. (origin
  1372. (method url-fetch)
  1373. (uri (pypi-uri "pylama" version))
  1374. (sha256
  1375. (base32
  1376. "13vx7daqz2918y9s8q3v2i3xaq3ah43a9p58srqi6hqskkpm7blv"))))
  1377. (build-system python-build-system)
  1378. (arguments
  1379. `(#:phases (modify-phases %standard-phases
  1380. (add-after 'unpack 'disable-failing-tests
  1381. (lambda _
  1382. ;; Fails with: "ImportError: cannot import name
  1383. ;; 'commented_out_code_line_numbers' from 'eradicate'".
  1384. (delete-file "pylama/lint/pylama_eradicate.py")
  1385. ;; Requires python-astroid, which fails to build on
  1386. ;; Python 3.9+ (see:
  1387. ;; https://github.com/PyCQA/astroid/issues/881).
  1388. (delete-file "pylama/lint/pylama_pylint.py"))))))
  1389. (native-inputs
  1390. `(("python-py" ,python-py)
  1391. ("python-pytest" ,python-pytest)
  1392. ("python-radon" ,python-radon)))
  1393. (propagated-inputs
  1394. `(("python-mccabe" ,python-mccabe)
  1395. ("python-mypy", python-mypy-minimal)
  1396. ("python-pycodestyle" ,python-pycodestyle)
  1397. ("python-pydocstyle" ,python-pydocstyle)
  1398. ("python-pyflakes" ,python-pyflakes)))
  1399. (home-page "https://github.com/klen/pylama")
  1400. (synopsis "Code audit tool for python")
  1401. (description "Pylama is a code audit tool for Python and JavaScript to check
  1402. for style, syntax and other code health metrics. It is essentially a
  1403. convenient wrapper above tools such as Pyflakes, pydocstyle, pycodestyle and
  1404. McCabe, among others.")
  1405. (license license:lgpl3+)))
  1406. (define-public python-pyannotate
  1407. (package
  1408. (name "python-pyannotate")
  1409. (version "1.2.0")
  1410. (source
  1411. (origin
  1412. (method url-fetch)
  1413. (uri (pypi-uri "pyannotate" version))
  1414. (sha256
  1415. (base32
  1416. "16bm0mf7wxvy0lgmcs1p8n1ji8pnvj1jvj8zk3am70dkp825iv84"))))
  1417. (build-system python-build-system)
  1418. (propagated-inputs
  1419. `(("python-mypy-extensions" ,python-mypy-extensions)
  1420. ("python-six" ,python-six)))
  1421. (home-page
  1422. "https://github.com/dropbox/pyannotate")
  1423. (synopsis "Auto-generate PEP-484 annotations")
  1424. (description "This package, PyAnnotate, is used to auto-generate PEP-484
  1425. annotations.")
  1426. (license license:asl2.0)))
  1427. (define-public python-eradicate
  1428. (package
  1429. (name "python-eradicate")
  1430. (version "2.0.0")
  1431. (source
  1432. (origin
  1433. (method url-fetch)
  1434. (uri (pypi-uri "eradicate" version))
  1435. (sha256
  1436. (base32
  1437. "1j30g9jfmbfki383qxwrfds8b23yiwywj40lng4lqcf5yab4ahr7"))))
  1438. (build-system python-build-system)
  1439. (home-page "https://github.com/myint/eradicate")
  1440. (synopsis "Remove commented-out code from Python sources")
  1441. (description "The @command{eradicate} command removes commented-out code
  1442. from Python files. It does this by detecting block comments that contain
  1443. valid Python syntax that are likely to be commented out code.")
  1444. (license license:expat)))
  1445. (define-public python-robber
  1446. (package
  1447. (name "python-robber")
  1448. (version "1.1.5")
  1449. (source (origin
  1450. (method url-fetch)
  1451. (uri (pypi-uri "robber" version))
  1452. (sha256
  1453. (base32
  1454. "0xp5csgv2g9q38hscml6bc5i1nm4xy5lzqqiimm2drxsf0hw2nq5"))))
  1455. (build-system python-build-system)
  1456. ;; There are no tests in the tarball downloaded from PyPI.
  1457. ;; The last version tagged in Github (0.1.0) is older than the one on PyPI.
  1458. ;; Reported upstream: <https://github.com/vesln/robber.py/issues/20>.
  1459. (arguments '(#:tests? #f))
  1460. (propagated-inputs
  1461. `(("python-mock" ,python-mock)
  1462. ("python-termcolor" ,python-termcolor)))
  1463. ;; URL of the fork used to generate the package available on PyPI.
  1464. (home-page "https://github.com/EastAgile/robber.py")
  1465. (synopsis "Test-driven development (TDD) assertion library for Python")
  1466. (description "Robber is a Python assertion library for test-driven and
  1467. behavior-driven development (TDD and BDD).")
  1468. (license license:expat)))
  1469. (define-public python-stestr
  1470. (package
  1471. (name "python-stestr")
  1472. (version "3.0.1")
  1473. (source
  1474. (origin
  1475. (method url-fetch)
  1476. (uri (pypi-uri "stestr" version))
  1477. (sha256
  1478. (base32
  1479. "0adhqp9c9338wlvlq776k57k04lyxp38bv591afdm9gjsn2qn1zm"))))
  1480. (build-system python-build-system)
  1481. (arguments
  1482. `(#:tests? #f)) ;to avoid circular dependencies
  1483. (native-inputs
  1484. `(("python-pbr" ,python-pbr)))
  1485. (propagated-inputs
  1486. `(("python-cliff" ,python-cliff)
  1487. ("python-fixtures" ,python-fixtures)
  1488. ("python-future" ,python-future)
  1489. ("python-pyyaml" ,python-pyyaml)
  1490. ("python-subunit" ,python-subunit)
  1491. ("python-testtools" ,python-testtools)
  1492. ("python-voluptuous" ,python-voluptuous)))
  1493. (home-page "https://stestr.readthedocs.io/en/latest/")
  1494. (synopsis "Parallel Python test runner")
  1495. (description "This package provides the @command{stestr} command, a
  1496. parallel Python test runner built around @code{subunit}. It is designed to
  1497. execute @code{unittest} test suites using multiple processes to split up
  1498. execution of a test suite. It will also store a history of all test runs to
  1499. help in debugging failures and optimizing the scheduler to improve speed.")
  1500. (license license:asl2.0)))
  1501. ;; This is only used by python-sanic
  1502. (define-public python-pytest-sanic
  1503. (package
  1504. (name "python-pytest-sanic")
  1505. (version "1.7.0")
  1506. (source (origin
  1507. (method url-fetch)
  1508. (uri (pypi-uri "pytest-sanic" version))
  1509. (sha256
  1510. (base32
  1511. "0hm7im77dgqfk8k34qbbfhimg8hifl4zwpa2s3mgbknrjvyw5qpx"))))
  1512. (build-system python-build-system)
  1513. (arguments
  1514. ;; Tests depend on python-sanic.
  1515. `(#:tests? #f))
  1516. (propagated-inputs
  1517. `(("python-httpx" ,python-httpx)
  1518. ("python-async-generator"
  1519. ,python-async-generator)
  1520. ("python-pytest" ,python-pytest)
  1521. ("python-websockets" ,python-websockets)))
  1522. (home-page
  1523. "https://github.com/yunstanford/pytest-sanic")
  1524. (synopsis "Pytest plugin for Sanic")
  1525. (description "A pytest plugin for Sanic. It helps you to test your
  1526. code asynchronously.")
  1527. (license license:expat)))
  1528. (define-public python-allpairspy
  1529. (package
  1530. (name "python-allpairspy")
  1531. (version "2.5.0")
  1532. (source
  1533. (origin
  1534. (method url-fetch)
  1535. (uri (pypi-uri "allpairspy" version))
  1536. (sha256
  1537. (base32 "1c987h13dly9919d15w3h747rgn50ilnv7dginhlprxbj564hn4k"))))
  1538. (build-system python-build-system)
  1539. (native-inputs
  1540. `(("python-pytest" ,python-pytest)
  1541. ("python-pytest-runner" ,python-pytest-runner)))
  1542. (home-page "https://github.com/thombashi/allpairspy")
  1543. (synopsis "Pairwise test combinations generator")
  1544. (description
  1545. "This is a Python library for test combinations generator. The generator
  1546. allows one to create a set of tests using @emph{pairwise combinations} method,
  1547. reducing a number of combinations of variables into a lesser set that covers
  1548. most situations.")
  1549. (license license:expat)))
  1550. (define-public python-pytest-mp
  1551. (package
  1552. (name "python-pytest-mp")
  1553. (version "0.0.4p2")
  1554. (source
  1555. (origin
  1556. (method git-fetch)
  1557. (uri (git-reference
  1558. (url "https://github.com/ansible/pytest-mp")
  1559. (commit "49a8ff2ca9ef62d8c86854ab31d6b5d5d6cf3f28")))
  1560. (file-name (git-file-name name version))
  1561. (sha256
  1562. (base32 "01v98b6n3yvkfmxf2v38xk5ijqlk6ika0yljwkhl5bh6qhq23498"))))
  1563. (build-system python-build-system)
  1564. (propagated-inputs
  1565. `(("python-pytest" ,python-pytest)
  1566. ("python-psutil" ,python-psutil)))
  1567. (arguments
  1568. ;; tests require setuptools-markdown, which is deprecated and not in guix
  1569. '(#:tests? #f
  1570. #:phases
  1571. (modify-phases %standard-phases
  1572. (add-after 'unpack 'remove-useless-requirements
  1573. (lambda _
  1574. (substitute* "setup.py"
  1575. ((" setup_requires=") " #")))))))
  1576. (home-page "https://github.com/ansible/pytest-mp")
  1577. (synopsis "Segregate tests into several processes")
  1578. (description "pytest-mp is a minimalist approach to distribute and
  1579. segregate pytest tests across processes using python's multiprocessing library
  1580. and is heavily inspired by pytest-concurrent and pytest-xdist. As a very
  1581. early beta, it doesn't pledge or intend to support the majority of platforms
  1582. or use cases. Design is based on supporting slow, io-bound testing with often
  1583. tedious system under test configuration that can benefit from running several
  1584. tests at one time.")
  1585. (license license:expat)))