projects/guix·blob python-team · refs

1278 lines · 44.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Cyril Roelandt <[email protected]>
3;;; Copyright © 2015, 2016, 2023 Efraim Flashner <[email protected]>
4;;; Copyright © 2016, 2017, 2019, 2021 Clément Lassieur <[email protected]>
5;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <[email protected]>
6;;; Copyright © 2018, 2022 Marius Bakke <[email protected]>
7;;; Copyright © 2020, 2021, 2025 Ricardo Wurmus <[email protected]>
8;;; Copyright © 2020 Maxim Cournoyer <[email protected]>
9;;; Copyright © 2022 Tanguy Le Carrour <[email protected]>
10;;; Copyright © 2022 Hartmut Goebel <[email protected]>
11;;; Copyright © 2025 Nicolas Graves <[email protected]>
12;;; Copyright © 2025 Sharlatan Hellseher <[email protected]>
13;;;
14;;; This file is part of GNU Guix.
15;;;
16;;; GNU Guix is free software; you can redistribute it and/or modify it
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
21;;; GNU Guix is distributed in the hope that it will be useful, but
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28
29(define-module (gnu packages openstack)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (gnu packages)
32 #:use-module (gnu packages bash)
33 #:use-module (gnu packages check)
34 #:use-module (gnu packages databases)
35 #:use-module (gnu packages gnupg)
36 #:use-module (gnu packages monitoring)
37 #:use-module (gnu packages python)
38 #:use-module (gnu packages python-build)
39 #:use-module (gnu packages python-check)
40 #:use-module (gnu packages python-crypto)
41 #:use-module (gnu packages python-web)
42 #:use-module (gnu packages python-xyz)
43 #:use-module (gnu packages sphinx)
44 #:use-module (gnu packages ssh)
45 #:use-module (gnu packages time)
46 #:use-module (gnu packages tls)
47 #:use-module (gnu packages version-control)
48 #:use-module (gnu packages virtualization)
49 #:use-module (gnu packages xml)
50 #:use-module (guix gexp)
51 #:use-module (guix build-system pyproject)
52 #:use-module (guix download)
53 #:use-module (guix git-download)
54 #:use-module (guix utils)
55 #:use-module (guix packages)
56 #:use-module (srfi srfi-1))
57
58(define-public python-cliff
59 (package
60 (name "python-cliff")
61 (version "4.10.0")
62 (source
63 (origin
64 (method url-fetch)
65 (uri (pypi-uri "cliff" version))
66 (sha256
67 (base32 "0vd8b4lypkc65xb4cih2b4l9qkhxyj52xj078q63p8214xl5n7wc"))))
68 (build-system pyproject-build-system)
69 (native-inputs
70 (list python-setuptools
71 python-sphinx
72 python-stestr
73 python-testscenarios))
74 (propagated-inputs
75 (list python-autopage
76 python-cmd2
77 python-prettytable
78 python-pyyaml
79 python-stevedore))
80 (home-page "https://opendev.org/openstack/cliff")
81 (synopsis "Framework for building command line programs")
82 (description "The @code{cliff} framework allows creating multi-level
83commands such as those of @command{subversion} and @command{git}, where the
84main program handles some basic argument parsing and then invokes a
85sub-command to do the work. It uses plugins to define sub-commands, output
86formatters, and other extensions.")
87 (license license:asl2.0)))
88
89(define-public python-cliff-bootstrap
90 (hidden-package
91 (package/inherit python-cliff
92 (arguments
93 (substitute-keyword-arguments arguments
94 ((#:tests? t? #t)
95 #f)
96 ((#:phases phases #~%standard-phases)
97 #~(modify-phases #$phases
98 (delete 'sanity-check)))))
99 (native-inputs
100 (list python-setuptools python-wheel))
101 (propagated-inputs
102 (modify-inputs propagated-inputs
103 (replace "python-stevedore" python-stevedore-bootstrap))))))
104
105(define-public python-debtcollector
106 (package
107 (name "python-debtcollector")
108 (version "3.0.0")
109 (source
110 (origin
111 (method url-fetch)
112 (uri (pypi-uri "debtcollector" version))
113 (sha256
114 (base32 "0vzarkvjclci98d8lvkix6qj59f7rxp1qg2x6q6is7qfbg91g29a"))))
115 (build-system pyproject-build-system)
116 (arguments
117 (list
118 #:phases
119 #~(modify-phases %standard-phases
120 (add-after 'unpack 'relax-requirements
121 (lambda _
122 (substitute* "test-requirements.txt"
123 (("^(coverage|hacking|pre-commit|reno).*")
124 "")
125 (("^(doc8|sphinx|openstackdocstheme).*")
126 "")))))))
127 (propagated-inputs
128 (list python-pbr python-wrapt))
129 (native-inputs
130 (list python-fixtures
131 python-setuptools
132 python-stestr
133 python-testtools
134 python-wheel))
135 (home-page "https://www.openstack.org/")
136 (synopsis
137 "Find deprecated patterns and strategies in Python code")
138 (description
139 "This package provides a collection of Python deprecation patterns and
140strategies that help you collect your technical debt in a non-destructive
141manner.")
142 (license license:asl2.0)))
143
144(define-public python-hacking
145 (package
146 (name "python-hacking")
147 (version "8.1.0")
148 (source
149 (origin
150 (method git-fetch)
151 (uri (git-reference
152 (url "https://github.com/openstack-dev/hacking")
153 (commit version)))
154 (file-name (git-file-name name version))
155 (sha256
156 (base32 "1pb2sp2c588kgq15xk78fy3hcd7rzkcqnnmsn6rlr2w6c5b08wqb"))))
157 (build-system pyproject-build-system)
158 (propagated-inputs
159 (list python-flake8))
160 (native-inputs
161 (list python-ddt
162 python-eventlet
163 python-fixtures
164 python-pbr
165 python-stestr
166 python-subunit
167 python-testscenarios
168 python-testtools))
169 (home-page "https://github.com/openstack-dev/hacking")
170 (synopsis "OpenStack hacking guideline enforcement")
171 (description
172 "Python-hacking is a set of flake8 plugins that test and enforce the
173@uref{http://docs.openstack.org/developer/hacking/, OpenStack style
174guidelines}.")
175 (license license:asl2.0)))
176
177(define-public python-openstackdocstheme
178 (package
179 (name "python-openstackdocstheme")
180 (version "3.6.0")
181 (source
182 (origin
183 (method git-fetch)
184 (uri (git-reference
185 (url "https://opendev.org/openstack/openstackdocstheme")
186 (commit version)))
187 (file-name (git-file-name name version))
188 (sha256
189 (base32 "0q7l374myiymnvlfa54iyj9iaa2pxxpdkqjhkc478n10v5ijbgq6"))))
190 (build-system pyproject-build-system)
191 (arguments
192 (list
193 #:tests? #f)) ; no tests in PyPI archive or git checkout
194 (native-inputs
195 (list python-setuptools))
196 (propagated-inputs
197 (list python-dulwich
198 python-pbr
199 python-sphinx))
200 (home-page "https://docs.openstack.org/openstackdocstheme/latest/")
201 (synopsis "OpenStack Docs Theme")
202 (description
203 "This package provides themes and extensions for Sphinx for publishing
204to docs.openstack.org and developer.openstack.org.")
205 (license license:asl2.0)))
206
207(define-public python-os-service-types
208 (package
209 (name "python-os-service-types")
210 (version "1.8.0")
211 (source
212 (origin
213 (method url-fetch)
214 (uri (pypi-uri "os_service_types" version))
215 (sha256
216 (base32 "0gk0lgg862pwpisjz36jlrnr5ij75c8ja01znb1398rc2d7yf349"))))
217 (build-system pyproject-build-system)
218 (arguments
219 (list
220 #:phases
221 #~(modify-phases %standard-phases
222 (add-after 'unpack 'relax-requirements
223 (lambda _
224 (substitute* "test-requirements.txt"
225 (("(coverage|hacking).*")
226 ""))))
227 (replace 'check
228 (lambda* (#:key tests? test-flags #:allow-other-keys)
229 (when tests?
230 (apply invoke "stestr" "run" test-flags)))))))
231 (native-inputs
232 (list python-keystoneauth1
233 python-oslotest
234 python-pbr
235 python-requests-mock
236 python-setuptools
237 python-stestr
238 python-testscenarios
239 python-wheel))
240 (home-page "https://docs.openstack.org/os-service-types/latest/")
241 (synopsis "Library for consuming OpenStack Service Types Authority data")
242 (description "The @emph{OpenStack Service Types Authority} contains
243information about officiag OpenStack services and their historical
244service-type aliases. The data is in JSON and the latest data should always
245be used. This simple library exists to allow for easy consumption of the
246data, along with a built-in version of the data to use in case network access
247is for some reason not possible and local caching of the fetched data.")
248 (license license:asl2.0)))
249
250(define-public python-os-service-types-bootstrap
251 (hidden-package
252 (package/inherit python-os-service-types
253 (arguments
254 (substitute-keyword-arguments arguments
255 ((#:tests? t? #t)
256 #f)
257 ((#:phases phases #~%standard-phases)
258 #~(modify-phases #$phases
259 (delete 'sanity-check)))))
260 (native-inputs
261 (list python-pbr python-setuptools python-wheel)))))
262
263(define-public python-os-testr
264 (let ((commit "0ba674d8c5d34890698e4e8ff9f71b24c389e109")
265 (revision "0"))
266 (package
267 (name "python-os-testr")
268 (version (git-version "3.0.0" revision commit))
269 (source
270 (origin
271 (method git-fetch)
272 (uri (git-reference
273 (url "https://github.com/openstack/os-testr")
274 (commit commit)))
275 (file-name (git-file-name name version))
276 (sha256
277 (base32 "1fd8n5fsq35ikak8by4z45sya2m1pmxpc4440579rfk3jjsq4vgc"))))
278 (build-system pyproject-build-system)
279 (arguments
280 (list
281 #:phases
282 #~(modify-phases %standard-phases
283 (add-after 'unpack 'relax-requirements
284 (lambda _
285 (substitute* "test-requirements.txt"
286 (("(coverage|hacking).*")
287 "")))))))
288 (propagated-inputs (list python-stestr))
289 (native-inputs
290 (list python-babel
291 python-ddt
292 python-oslotest
293 python-pbr
294 python-setuptools
295 python-testrepository
296 python-testscenarios
297 python-testtools))
298 (home-page "https://github.com/openstack/os-testr")
299 (synopsis "Testr wrapper to provide functionality for OpenStack projects")
300 (description
301 "Os-testr provides developers with a testr wrapper and an output filter
302 for subunit.")
303 (license license:asl2.0))))
304
305(define-public python-stevedore
306 (package
307 (name "python-stevedore")
308 (version "5.4.1")
309 (source
310 (origin
311 (method url-fetch)
312 (uri (pypi-uri "stevedore" version))
313 (sha256
314 (base32
315 "0jvgrn2mk7psrgly61k16p6pywnb191gzfliy9p824pya2pbad9i"))))
316 (build-system pyproject-build-system)
317 (arguments
318 (list
319 #:phases
320 #~(modify-phases %standard-phases
321 (add-after 'unpack 'relax-requirements
322 (lambda _
323 (substitute* "test-requirements.txt"
324 (("sphinx.*")
325 "sphinx\n"))))
326 (replace 'check
327 (lambda* (#:key tests? test-flags #:allow-other-keys)
328 (when tests?
329 (apply invoke "stestr" "run" test-flags)))))))
330 (propagated-inputs (list python-pbr))
331 (native-inputs
332 (list python-coverage
333 python-setuptools
334 python-sphinx
335 python-stestr
336 python-wheel))
337 (home-page "https://github.com/dreamhost/stevedore")
338 (synopsis "Manage dynamic plugins for Python applications")
339 (description
340 "Python makes loading code dynamically easy, allowing you to configure
341and extend your application by discovering and loading extensions (\"plugins\")
342at runtime. Many applications implement their own library for doing this,
343using __import__ or importlib. Stevedore avoids creating yet another extension
344mechanism by building on top of setuptools entry points. The code for managing
345entry points tends to be repetitive, though, so stevedore provides manager
346classes for implementing common patterns for using dynamically loaded
347extensions.")
348 (license license:asl2.0)))
349
350(define-public python-stevedore-bootstrap
351 (hidden-package
352 (package/inherit python-stevedore
353 (arguments
354 (substitute-keyword-arguments arguments
355 ((#:tests? t? #t)
356 #f)
357 ((#:phases phases #~%standard-phases)
358 #~(modify-phases #$phases
359 (delete 'sanity-check)))))
360 (native-inputs
361 (list python-setuptools python-wheel)))))
362
363(define-public python-tempest
364 (package
365 (name "python-tempest")
366 (version "42.0.0")
367 (source
368 (origin
369 (method url-fetch)
370 (uri (pypi-uri "tempest" version))
371 (sha256
372 (base32 "03jc474y57k4c2ydlzw8qx327am9ag15s8j4r4jadrs2x149qvlx"))))
373 (build-system pyproject-build-system)
374 (arguments
375 (list
376 #:test-flags
377 #~(list "--test-path" "./tempest/tests"
378 ;; XXX: Probably requires some setup.
379 "--exclude-regex" (string-join
380 (list "test_load_json_resource_list"
381 "test_load_json_saved_state"
382 "test_take_action_got_exception"
383 "test_hacking")
384 "|"))
385 #:phases
386 #~(modify-phases %standard-phases
387 (add-after 'unpack 'remove-failing-tests
388 (lambda _
389 ;; XXX: Most of those tests require network connection.
390 (delete-file-recursively "tempest/tests/lib/services/volume")
391 (delete-file "tempest/tests/test_hacking.py")))
392 (add-after 'unpack 'relax-requirements
393 (lambda _
394 (substitute* "test-requirements.txt"
395 ;; unused, code-quality checks only
396 (("(hacking|flake8-.*|pycodestyle|coverage)[<>!=]" line)
397 (string-append "# " line)))))
398 (add-before 'check 'setup-check
399 (lambda* (#:key inputs #:allow-other-keys)
400 (substitute* "tempest/tests/lib/cli/test_execute.py"
401 (("cli_base.execute\\(\"env\",")
402 (string-append "cli_base.execute('"
403 (search-input-file inputs "bin/env") "',")))))
404 (replace 'check
405 (lambda* (#:key tests? test-flags #:allow-other-keys)
406 (when tests?
407 (apply invoke "stestr" "run" test-flags)))))))
408 (propagated-inputs (list python-cliff
409 python-cryptography
410 python-defusedxml
411 python-fasteners
412 python-fixtures
413 python-jsonschema
414 python-netaddr
415 python-oslo-concurrency
416 python-oslo-config
417 python-oslo-log
418 python-oslo-serialization
419 python-oslo-utils
420 python-paramiko
421 python-prettytable
422 python-pyyaml
423 python-stevedore
424 python-subunit
425 python-testtools
426 python-urllib3))
427 (native-inputs (list python-oslotest
428 python-pbr
429 python-setuptools
430 python-stestr
431 python-testscenarios
432 python-wheel))
433 (home-page "https://docs.openstack.org/tempest/latest/")
434 (synopsis "OpenStack Integration Testing")
435 (description "This is a set of integration tests to be run against a live
436OpenStack cluster. Tempest has batteries of tests for OpenStack API
437validation, scenarios, and other specific tests useful in validating an
438OpenStack deployment.")
439 (license license:asl2.0)))
440
441(define-public python-tempest-lib
442 (package
443 (name "python-tempest-lib")
444 (version "1.0.0")
445 (source
446 (origin
447 (method url-fetch)
448 (uri (pypi-uri "tempest-lib" version))
449 (sha256
450 (base32 "1cpp2vwmawpd29hjsklsps181lq2ah91cl412qvpnz228nf9sqn5"))))
451 (build-system pyproject-build-system)
452 (arguments
453 (list
454 #:tests? #f ; FIXME: Requires a lot of ancient packages.
455 #:phases
456 #~(modify-phases %standard-phases
457 (add-after 'unpack 'relax-requirements
458 (lambda _
459 (substitute* "requirements.txt"
460 (("jsonschema[<>!=].*") "jsonschema\n"))))
461 (add-before 'check 'pre-check
462 (lambda* (#:key inputs #:allow-other-keys)
463 (substitute* "tempest_lib/tests/cli/test_execute.py"
464 (("/bin/ls")
465 (search-input-file inputs "bin/ls"))))))))
466 (propagated-inputs
467 (list python-fixtures
468 python-httplib2
469 python-iso8601
470 python-jsonschema
471 python-oslo-log
472 python-paramiko))
473 (native-inputs
474 (list python-babel
475 python-mock
476 python-os-testr
477 python-oslotest
478 python-pbr
479 python-setuptools
480 python-wheel))
481 (home-page "https://www.openstack.org/")
482 (synopsis "OpenStack functional testing library")
483 (description
484 "Tempest-lib is a functional testing library for OpenStack. It provides
485common features used in Tempest.")
486 (license license:asl2.0)))
487
488
489;;;
490;;; Packages from the Oslo library
491;;;
492
493(define-public python-oslo-concurrency
494 (package
495 (name "python-oslo-concurrency")
496 (version "7.1.0")
497 (source
498 (origin
499 (method url-fetch)
500 (uri (pypi-uri "oslo_concurrency" version))
501 (sha256
502 (base32 "1jqlshynn8ddix3jx9ma969d6829xyy0vryhy5lpvc02h1zqg2nz"))))
503 (build-system pyproject-build-system)
504 (arguments
505 (list
506 ;; XXX: At least another test is failing, but blocks the rest.
507 #:tests? #f
508 ;; XXX: Disable failing tests.
509 #:test-flags
510 #~(list "--exclude-regex" (string-join
511 (list "test_fair_lock_with_spawn"
512 "test_fair_lock_with_spawn_n"
513 "test_with_stdout")
514 "|"))
515 #:phases
516 #~(modify-phases %standard-phases
517 (add-after 'unpack 'relax-requirements
518 (lambda _
519 (substitute* "test-requirements.txt"
520 (("(hacking|coverage|bandit|pre-commit)[<>!=]" line)
521 (string-append "# " line)))))
522 (add-before 'check 'fix-tests
523 (lambda* (#:key inputs #:allow-other-keys)
524 (define (cross-which bin)
525 (search-input-file inputs (string-append "bin/" bin)))
526 (substitute* "oslo_concurrency/tests/unit/test_processutils.py"
527 (("#!/bin/(bash|sh)" all sh)
528 (string-append "#!" (cross-which sh)))
529 (("'/usr/bin/env('| )" all rest)
530 (string-append "'" (cross-which "env") rest))
531 (("'/bin/true'")
532 (string-append "'" (cross-which "true") "'")))))
533 (replace 'check
534 (lambda* (#:key tests? test-flags #:allow-other-keys)
535 (when tests?
536 (apply invoke "stestr" "run" test-flags)))))))
537 (native-inputs
538 (list python-coverage
539 python-eventlet
540 python-fixtures
541 python-oslotest
542 python-pbr
543 python-setuptools
544 python-stestr
545 python-wheel))
546 (propagated-inputs
547 (list python-fasteners
548 python-oslo-config
549 python-oslo-i18n
550 python-oslo-utils))
551 (home-page "https://docs.openstack.org/oslo.concurrency/latest/")
552 (synopsis "Oslo Concurrency library")
553 (description "The Oslo Concurrency Library provides utilities for safely
554running multi-thread, multi-process applications using locking mechanisms and
555for running external processes.")
556 (license license:asl2.0)))
557
558(define-public python-oslo-config
559 (package
560 (name "python-oslo-config")
561 (version "9.8.0")
562 (source
563 (origin
564 (method url-fetch)
565 (uri (pypi-uri "oslo_config" version))
566 (sha256
567 (base32 "1ah8knzcxkg28v9av19wp6bg91d1mfyxm2y56whngvmb0jah1a7f"))))
568 (build-system pyproject-build-system)
569 (arguments
570 (list
571 ;; XXX: Disable failing tests.
572 #:test-flags
573 #~(list "--exclude-regex" (string-join
574 (list "test_print_help"
575 "test_print_strOpt_with_choices_help")
576 "|"))
577 #:phases
578 #~(modify-phases %standard-phases
579 (replace 'check
580 (lambda* (#:key tests? test-flags #:allow-other-keys)
581 (when tests?
582 (apply invoke "stestr" "run" test-flags)))))))
583 (propagated-inputs
584 (list python-netaddr
585 python-oslo-i18n-bootstrap
586 python-pyyaml
587 python-requests
588 python-rfc3986
589 python-stevedore))
590 (native-inputs
591 (list python-coverage
592 python-docutils
593 python-fixtures
594 python-oslo-log-bootstrap
595 python-oslotest-bootstrap
596 python-pbr
597 python-requests-mock
598 python-setuptools
599 python-sphinx
600 python-stestr
601 python-testscenarios
602 python-testtools))
603 (home-page "https://launchpad.net/oslo")
604 (synopsis "Oslo Configuration API")
605 (description
606 "The Oslo configuration API supports parsing command line arguments and
607.ini style configuration files.")
608 (license license:asl2.0)))
609
610(define-public python-oslo-context
611 (package
612 (name "python-oslo-context")
613 (version "5.0.0")
614 (source
615 (origin
616 (method url-fetch)
617 (uri (pypi-uri "oslo.context" version))
618 (sha256
619 (base32
620 "091j2cjh1b60nx6s0a4amb2idh9awijnbmppc3an0738fv8cdh48"))))
621 (build-system pyproject-build-system)
622 (arguments
623 (list
624 #:phases
625 #~(modify-phases %standard-phases
626 (add-after 'unpack 'relax-requirements
627 (lambda _
628 (substitute* "test-requirements.txt"
629 ;; unused, code-quality checks only
630 (("(bandit|hacking|pre-commit)[<>!=]" line)
631 (string-append "# " line))))))))
632 (propagated-inputs
633 (list python-debtcollector))
634 (native-inputs
635 (list python-coverage
636 python-fixtures
637 python-mypy
638 python-oslotest-bootstrap
639 python-pbr
640 python-setuptools
641 python-stestr
642 python-wheel))
643 (home-page "https://launchpad.net/oslo")
644 (synopsis "Oslo context library")
645 (description
646 "The Oslo context library has helpers to maintain useful information
647about a request context. The request context is usually populated in the WSGI
648pipeline and used by various modules such as logging.")
649 (license license:asl2.0)))
650
651(define-public python-oslo-i18n
652 (package
653 (name "python-oslo-i18n")
654 (version "6.5.1")
655 (source
656 (origin
657 (method url-fetch)
658 (uri (pypi-uri "oslo_i18n" version))
659 (sha256
660 (base32 "178h7grww0brsdcp2iz87giappl928ir82arnvppcz5gqmq6m1ga"))))
661 (build-system pyproject-build-system)
662 (native-inputs
663 (list python-coverage
664 python-debtcollector
665 python-oslo-config
666 python-oslotest
667 python-pbr
668 python-setuptools
669 python-stestr
670 python-testscenarios
671 python-wheel))
672 (home-page "https://launchpad.net/oslo")
673 (synopsis "Oslo internationalization (i18n) library")
674 (description
675 "The oslo.i18n library contain utilities for working with
676internationalization (i18n) features, especially translation for text strings
677in an application or library.")
678 (license license:asl2.0)))
679
680(define-public python-oslo-i18n-bootstrap
681 (hidden-package
682 (package/inherit python-oslo-i18n
683 (arguments
684 (substitute-keyword-arguments arguments
685 ((#:tests? t? #t)
686 #f)
687 ((#:phases phases #~%standard-phases)
688 #~(modify-phases #$phases
689 (delete 'sanity-check)))))
690 (native-inputs
691 (list python-pbr python-setuptools python-wheel)))))
692
693(define-public python-oslo-log
694 (package
695 (name "python-oslo-log")
696 (version "7.2.0")
697 (source
698 (origin
699 (method url-fetch)
700 (uri (pypi-uri "oslo_log" version))
701 (sha256
702 (base32 "1siw60x15ysfbf88hiisdn556y4anixj3clciky4xcwsiz8a6gwn"))))
703 (build-system pyproject-build-system)
704 (arguments
705 (list
706 #:phases
707 #~(modify-phases %standard-phases
708 (replace 'check
709 (lambda* (#:key tests? test-flags #:allow-other-keys)
710 (when tests?
711 (apply invoke "stestr" "run" test-flags)))))))
712 (propagated-inputs
713 (list python-dateutil
714 python-oslo-config
715 python-oslo-context
716 python-oslo-i18n-bootstrap
717 python-oslo-serialization
718 python-oslo-utils))
719 (native-inputs
720 (list python-coverage
721 python-eventlet
722 python-fixtures
723 python-oslotest-bootstrap
724 python-pbr
725 python-setuptools
726 python-stestr
727 python-testtools
728 python-wheel))
729 (home-page "https://launchpad.net/oslo")
730 (synopsis "Python logging library of the Oslo project")
731 (description
732 "The oslo.log (logging) configuration library provides standardized
733configuration for all OpenStack projects. It also provides custom formatters,
734handlers and support for context specific logging (like resource id’s etc).")
735 (license license:asl2.0)))
736
737(define-public python-oslo-log-bootstrap
738 (hidden-package
739 (package/inherit python-oslo-log
740 (arguments
741 (substitute-keyword-arguments arguments
742 ((#:tests? t? #t)
743 #f)
744 ((#:phases phases #~%standard-phases)
745 #~(modify-phases #$phases
746 (delete 'sanity-check)))))
747 (propagated-inputs
748 (modify-inputs propagated-inputs
749 (delete "python-oslo-config"))))))
750
751(define-public python-oslo-serialization
752 (package
753 (name "python-oslo-serialization")
754 (version "5.7.0")
755 (source
756 (origin
757 (method url-fetch)
758 (uri (pypi-uri "oslo_serialization" version))
759 (sha256
760 (base32 "1rrvdhv82gklj45z6xs1h4l51jcz8fmdjijya2rkj1mqjzfx7i5x"))))
761 (build-system pyproject-build-system)
762 (arguments
763 (list
764 #:phases
765 #~(modify-phases %standard-phases
766 (replace 'check
767 (lambda* (#:key tests? test-flags #:allow-other-keys)
768 (when tests?
769 (apply invoke "stestr" "run" test-flags)))))))
770 (propagated-inputs
771 (list python-msgpack python-oslo-utils python-tzdata))
772 (native-inputs
773 (list python-netaddr
774 python-oslo-i18n-bootstrap
775 python-oslotest-bootstrap
776 python-setuptools
777 python-stestr
778 python-wheel))
779 (home-page "https://launchpad.net/oslo")
780 (synopsis "Oslo serialization library")
781 (description
782 "The oslo.serialization library provides support for representing objects
783in transmittable and storable formats, such as JSON and MessagePack.")
784 (license license:asl2.0)))
785
786(define-public python-reno
787 (package
788 (name "python-reno")
789 (version "4.1.0")
790 (source
791 (origin
792 (method git-fetch)
793 (uri (git-reference
794 (url "https://opendev.org/openstack/reno")
795 (commit version)))
796 (file-name (git-file-name name version))
797 (sha256
798 (base32 "0h9d049xq4nfw26mry3br1xdcvsw8lyawv1ihmc3jf0p9ns4kvwm"))))
799 (build-system pyproject-build-system)
800 (arguments
801 (list
802 #:phases
803 #~(modify-phases %standard-phases
804 (add-before 'check 'pre-check
805 (lambda _
806 (setenv "HOME" "/tmp")
807 ;; reno expects a git repo
808 (invoke "git" "init"))))))
809 (native-inputs
810 (list git-minimal/pinned
811 gnupg
812 python-docutils
813 python-pbr
814 python-pytest
815 python-setuptools
816 python-sphinx
817 python-stestr
818 python-subunit
819 python-testscenarios
820 python-testtools))
821 (propagated-inputs
822 (list python-dulwich
823 python-pyyaml))
824 (home-page "https://docs.openstack.org/reno/latest/")
825 (synopsis "Release notes manager")
826 (description "Reno is a tool for storing release notes in a git repository
827and building documentation from them.")
828 (license license:asl2.0)))
829
830(define-public python-oslotest
831 (package
832 (name "python-oslotest")
833 (version "5.0.1")
834 (source
835 (origin
836 (method url-fetch)
837 (uri (pypi-uri "oslotest" version))
838 (sha256
839 (base32 "1vp85v81p2vx66j973hc7fa65shp0ilhaypyyny01jwcip94152s"))))
840 (build-system pyproject-build-system)
841 (arguments
842 (list
843 #:phases
844 #~(modify-phases %standard-phases
845 (add-after 'unpack 'remove-sub-package
846 ;; error: Multiple top-level packages discovered in a flat-layout:
847 ;; ['oslotest', 'releasenotes'].
848 (lambda _
849 (delete-file-recursively "releasenotes"))))))
850 (native-inputs
851 (list python-debtcollector
852 python-oslo-config
853 python-stestr
854 python-setuptools))
855 (propagated-inputs
856 (list python-fixtures
857 python-subunit
858 python-testtools))
859 (home-page "https://launchpad.net/oslo")
860 (synopsis "Oslo test framework")
861 (description "The Oslo Test framework provides common fixtures, support
862for debugging, and better support for mocking results.")
863 (license license:asl2.0)))
864
865(define-public python-oslotest-bootstrap
866 (hidden-package
867 (package/inherit python-oslotest
868 (arguments
869 (substitute-keyword-arguments arguments
870 ((#:tests? t? #t)
871 #f)
872 ((#:phases phases #~%standard-phases)
873 #~(modify-phases #$phases
874 (delete 'sanity-check)))))
875 (native-inputs
876 (list python-setuptools python-wheel)))))
877
878(define-public python-oslo-utils
879 (package
880 (name "python-oslo-utils")
881 (version "7.4.0")
882 (source
883 (origin
884 (method url-fetch)
885 (uri (pypi-uri "oslo.utils" version))
886 (sha256
887 (base32 "1kiynw1xhw88iimazjzmjrf4h8bzdyjyvkgj6jsz9p85m9fwnpda"))))
888 (build-system pyproject-build-system)
889 (arguments
890 (list
891 ;; XXX: Disable failing test.
892 #:test-flags
893 #~(list "--exclude-regex" "test_format_6_luks")
894 #:phases
895 #~(modify-phases %standard-phases
896 (replace 'check
897 (lambda* (#:key tests? test-flags #:allow-other-keys)
898 (when tests?
899 (apply invoke "stestr" "run" test-flags)))))))
900 (propagated-inputs
901 (list python-debtcollector
902 python-iso8601
903 python-netaddr
904 python-netifaces
905 python-oslo-i18n-bootstrap
906 python-packaging
907 python-pbr
908 python-psutil
909 python-pyparsing
910 python-pyyaml
911 python-tzdata))
912 (native-inputs
913 (list python-ddt
914 python-eventlet
915 python-fixtures
916 python-oslotest-bootstrap
917 python-setuptools
918 python-stestr
919 python-testscenarios
920 python-testtools
921 python-wheel
922 qemu-minimal))
923 (home-page "https://launchpad.net/oslo")
924 (synopsis "Oslo utility library")
925 (description
926 "The @code{oslo.utils} library provides support for common utility type
927functions, such as encoding, exception handling, string manipulation, and time
928handling.")
929 (license license:asl2.0)))
930
931(define-public python-keystoneauth1
932 (package
933 (name "python-keystoneauth1")
934 (version "5.11.1")
935 (source
936 (origin
937 (method url-fetch)
938 (uri (pypi-uri "keystoneauth1" version))
939 (sha256
940 (base32 "1wwicmgmga7ylyb2a15nh5y29r41vmxhyijs7ynjqjvzkg214vw0"))))
941 (build-system pyproject-build-system)
942 (arguments
943 (list
944 ;; XXX: Disable failing test.
945 #:test-flags
946 #~(list "--exclude-regex" "test_keystoneauth_betamax_fixture")
947 #:phases
948 #~(modify-phases %standard-phases
949 (add-after 'unpack 'relax-requirements
950 (lambda _
951 (substitute* "test-requirements.txt"
952 ;; unused, code-quality checks only
953 (("(hacking|coverage|bandit|reno)[<>!=]"
954 line)
955 (string-append "# " line)))))
956 (add-before 'check 'check-setup
957 (lambda _
958 ;; remove code-quality checks
959 (delete-file "keystoneauth1/tests/unit/test_hacking_checks.py")))
960 (replace 'check
961 (lambda* (#:key tests? test-flags #:allow-other-keys)
962 (when tests?
963 (apply invoke "stestr" "run" test-flags)))))))
964 (propagated-inputs
965 (list python-iso8601
966 python-os-service-types-bootstrap
967 python-pbr
968 python-requests
969 python-stevedore
970 python-typing-extensions))
971 (native-inputs
972 (list python-betamax
973 python-fixtures
974 python-lxml
975 python-oauthlib
976 python-oslo-config
977 python-oslo-utils
978 python-oslotest
979 python-pyyaml
980 python-requests-kerberos
981 python-requests-mock
982 python-setuptools
983 python-stestr
984 python-testresources
985 python-testtools
986 python-wheel))
987 (home-page "https://docs.openstack.org/keystoneauth/latest/")
988 (synopsis "Authentication Library for OpenStack Identity")
989 (description "Keystoneauth provides a standard way to do authentication
990and service requests within the OpenStack ecosystem. It is designed for use
991in conjunction with the existing OpenStack clients and for simplifying the
992process of writing new clients.")
993 (license license:asl2.0)))
994
995(define-public python-keystoneclient
996 (package
997 (name "python-keystoneclient")
998 (version "5.6.0")
999 (source
1000 (origin
1001 (method url-fetch)
1002 (uri (pypi-uri "python_keystoneclient" version))
1003 (sha256
1004 (base32
1005 "1rqhxvych2a41dxlizz0qy37vs8jcxxy4kk7khw7c03iqypf47bj"))))
1006 (build-system pyproject-build-system)
1007 (arguments
1008 (list
1009 #:phases
1010 #~(modify-phases %standard-phases
1011 (add-after 'unpack 'remove-failing-tests
1012 (lambda _
1013 ;; XXX: Mostly tests for outdated os-client-config.
1014 (delete-file-recursively "keystoneclient/tests/functional/v3")))
1015 (replace 'check
1016 (lambda* (#:key tests? test-flags #:allow-other-keys)
1017 (when tests?
1018 (apply invoke "stestr" "run" test-flags))))
1019 (add-after 'unpack 'relax-requirements
1020 (lambda _
1021 (substitute* "test-requirements.txt"
1022 ;; XXX: Outdated/discontinued.
1023 (("os-client-config[<>!=]" line) (string-append "# " line))
1024 ;; unused, code-quality checks only
1025 (("(hacking|flake8-.*|pycodestyle|coverage|bandit|reno)[<>!=]"
1026 line)
1027 (string-append "# " line))))))))
1028 (native-inputs
1029 (list openssl
1030 python-bandit
1031 python-fixtures
1032 python-keyring
1033 python-lxml
1034 python-mock
1035 python-oauthlib
1036 python-oslotest
1037 python-pbr
1038 python-requests-mock
1039 python-setuptools
1040 python-stestr
1041 python-tempest
1042 python-tempest-lib
1043 python-testresources
1044 python-testscenarios
1045 python-testtools
1046 python-wheel))
1047 (propagated-inputs
1048 (list python-keystoneauth1
1049 python-oslo-config
1050 python-oslo-i18n
1051 python-oslo-serialization
1052 python-oslo-utils
1053 python-packaging
1054 python-pbr
1055 python-requests
1056 python-stevedore))
1057 (home-page "https://www.openstack.org/")
1058 (synopsis "Client Library for OpenStack Identity")
1059 (description
1060 "Python-keystoneclient is the identity service used by OpenStack for
1061authentication (authN) and high-level authorization (authZ). It currently
1062supports token-based authN with user/service authZ, and is scalable to support
1063OAuth, SAML, and OpenID in future versions. Out of the box, Keystone uses
1064SQLite for its identity store database, with the option to connect to external
1065LDAP.")
1066 (license license:asl2.0)))
1067
1068(define-public python-swiftclient
1069 (package
1070 (name "python-swiftclient")
1071 (version "4.8.0")
1072 (source
1073 (origin
1074 (method url-fetch)
1075 (uri (pypi-uri "python_swiftclient" version))
1076 (sha256
1077 (base32 "0qrq9fdcmqhg1374hsj58hddpfd2jm78q32yqbywls4k8smjq5j4"))))
1078 (build-system pyproject-build-system)
1079 (arguments
1080 (list
1081 #:phases
1082 #~(modify-phases %standard-phases
1083 (add-before 'check 'relax-requirements
1084 (lambda _
1085 (delete-file "test-requirements.txt")))
1086 (replace 'check
1087 (lambda* (#:key tests? test-flags #:allow-other-keys)
1088 (when tests?
1089 (apply invoke "stestr" "run" test-flags)))))))
1090 (native-inputs
1091 (list python-keystoneauth1
1092 python-keystoneclient
1093 python-openstacksdk
1094 python-pbr
1095 python-setuptools
1096 python-stestr
1097 python-wheel))
1098 (propagated-inputs
1099 (list python-requests))
1100 (home-page "https://www.openstack.org/")
1101 (synopsis "OpenStack Object Storage API Client Library")
1102 (description
1103 "OpenStack Object Storage (code-named Swift) creates redundant, scalable
1104object storage using clusters of standardized servers to store petabytes of
1105accessible data. It is not a file system or real-time data storage system, but
1106rather a long-term storage system for a more permanent type of static data that
1107can be retrieved, leveraged, and then updated if necessary. Primary examples of
1108data that best fit this type of storage model are virtual machine images, photo
1109storage, email storage and backup archiving. Having no central \"brain\" or
1110master point of control provides greater scalability, redundancy and
1111permanence.")
1112 (license license:asl2.0)))
1113
1114(define-public python-git-review
1115 (package
1116 (name "python-git-review")
1117 (version "2.5.0")
1118 (source
1119 (origin
1120 (method url-fetch)
1121 (uri (pypi-uri "git_review" version))
1122 (sha256
1123 (base32 "1a7h3i1wsq0gsclb2mififypr9q0sz3ni0kf0qxmm2l40bpzmkqv"))))
1124 (build-system pyproject-build-system)
1125 (arguments
1126 (list
1127 #:tests? #f ; tests require a running Gerrit server
1128 #:phases
1129 #~(modify-phases %standard-phases
1130 (add-after 'wrap 'wrap-program
1131 (lambda* (#:key inputs #:allow-other-keys)
1132 (wrap-program (string-append #$output "/bin/git-review")
1133 `("PATH" ":" prefix
1134 ,(map (lambda (bin)
1135 (search-input-file inputs
1136 (string-append "bin/" bin)))
1137 (list "git" "ssh")))))))))
1138 (native-inputs (list python-pbr python-setuptools python-wheel))
1139 (propagated-inputs (list python-requests))
1140 (inputs (list bash-minimal git-minimal openssh-sans-x))
1141 (home-page "https://docs.openstack.org/infra/git-review/")
1142 (synopsis "Command-line tool for Gerrit")
1143 (description
1144 "Git-review is a command-line tool that helps submitting Git branches to
1145Gerrit for review, or fetching existing ones.")
1146 (license license:asl2.0)))
1147
1148(define-public python-requestsexceptions
1149 (package
1150 (name "python-requestsexceptions")
1151 (version "1.4.0")
1152 (source
1153 (origin
1154 (method git-fetch)
1155 (uri (git-reference
1156 (url "https://github.com/openstack/requestsexceptions")
1157 (commit version)))
1158 (file-name (git-file-name name version))
1159 (sha256
1160 (base32 "12c4bi2vm337sgbbl08i01v794glnk1fzgxdc11545dqdl57rslz"))))
1161 (build-system pyproject-build-system)
1162 (arguments
1163 (list
1164 ;; XXX: There are some tests in tox.ini, but it leads nowhere.
1165 #:tests? #f
1166 #:phases
1167 #~(modify-phases %standard-phases
1168 (add-after 'unpack 'relax-requirements
1169 (lambda _
1170 (substitute* "test-requirements.txt"
1171 (("hacking.*")
1172 "")))))))
1173 (native-inputs (list python-os-testr python-pbr python-setuptools))
1174 (home-page "https://github.com/openstack/requestsexceptions")
1175 (synopsis
1176 "Import exceptions from potentially bundled packages in requests")
1177 (description
1178 "The Python requests library bundles the urllib3 library, however, some
1179software distributions modify requests to remove the bundled library. This
1180makes some operations difficult, such as suppressing the “insecure platform
1181warning” messages that urllib emits. This package is a simple library to find
1182the correct path to exceptions in the requests library regardless of whether
1183they are bundled or not.")
1184 (license license:asl2.0)))
1185
1186(define-public python-openstacksdk
1187 (package
1188 (name "python-openstacksdk")
1189 (version "4.6.0")
1190 (source
1191 (origin
1192 (method url-fetch)
1193 (uri (pypi-uri "openstacksdk" version))
1194 (sha256
1195 (base32 "0gbxjz8dg5ar5mgbk896cpq5vgp4j3a1iri8aakaxs9j8xn1czp4"))))
1196 (build-system pyproject-build-system)
1197 (arguments
1198 (list
1199 #:test-flags
1200 #~(list "--exclude-regex"
1201 (string-join
1202 (list
1203 ;; tests timing out
1204 "test_create_dynamic_large_object"
1205 "test_create_object_index_rax"
1206 "test_create_object_skip_checksum"
1207 "test_inspect_machine_inspect_failed"
1208 "test_inspect_machine_wait"
1209 "test_status_fails_different_attribute"
1210 "test_status_match"
1211 "test_status_match_different_attribute"
1212 "test_status_match_with_none"
1213 "test_wait_for_baremetal_node_lock_locked"
1214 "test_wait_for_task_error_396"
1215 "test_wait_for_task_wait"
1216 ;; XXX: Most fail due to network issues.
1217 "test_callback"
1218 "test_callback_without_progress"
1219 "test_create_data"
1220 "test_create_image_task"
1221 "test_create_no_data"
1222 "test_delete_autocreated_image_objects"
1223 "test_delete_firewall_policy"
1224 "test_delete_firewall_policy_filters"
1225 "test_delete_firewall_rule"
1226 "test_delete_firewall_rule_filters"
1227 "test_delete_image_task"
1228 "test_delete_volume_backup_wait"
1229 "test_get_object"
1230 "test_ost_version"
1231 "test_slo_manifest_fail"
1232 "test_status"
1233 "test_stream_object"
1234 "test_success_not_found")
1235 "|"))
1236 #:phases
1237 #~(modify-phases %standard-phases
1238 (replace 'check
1239 (lambda* (#:key tests? test-flags #:allow-other-keys)
1240 (when tests?
1241 (apply invoke "stestr" "run" test-flags)))))))
1242 (native-inputs
1243 (list python-debtcollector
1244 python-ddt
1245 python-hacking
1246 python-jsonschema
1247 python-oslo-config
1248 python-oslotest
1249 python-pbr
1250 python-prometheus-client
1251 python-requests-mock
1252 python-setuptools
1253 python-statsd
1254 python-stestr
1255 python-testscenarios
1256 python-wheel))
1257 (propagated-inputs
1258 (list python-cryptography
1259 python-decorator
1260 python-dogpile-cache
1261 python-iso8601
1262 python-jmespath
1263 python-jsonpatch
1264 python-keystoneauth1
1265 python-os-service-types
1266 python-pbr
1267 python-platformdirs
1268 python-psutil
1269 python-pyyaml
1270 python-requestsexceptions
1271 python-typing-extensions))
1272 (home-page "https://docs.openstack.org/openstacksdk/latest/")
1273 (synopsis "SDK for building applications to work with OpenStack")
1274 (description "This package provides a client library for building
1275applications to work with OpenStack clouds. The SDK aims to provide a
1276consistent and complete set of interactions with OpenStack’s many services,
1277along with complete documentation, examples, and tools.")
1278 (license license:asl2.0)))