projects/guix·blob libreoffice · refs

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