Compare commits

...

372 Commits
v0.1.2 ... main

Author SHA1 Message Date
renovate[bot]
3a63829ae7
chore(deps): lock file maintenance (#335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-01 13:19:02 +02:00
renovate[bot]
2e60105935 chore(deps): update dependency ruff to v0.4.5 2024-05-27 03:12:43 +00:00
renovate[bot]
48858eb1c6 chore(docker): update python:3.12-alpine docker digest to 5365725 2024-05-23 06:31:30 +00:00
renovate[bot]
0184f49b36 chore(deps): update dependency pytest to v8.2.1 2024-05-20 11:53:31 +00:00
renovate[bot]
7380eaf2eb chore(deps): update dependency ruff to v0.4.4 2024-05-13 04:52:47 +00:00
renovate[bot]
81db3affad
chore(deps): lock file maintenance (#330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 12:14:48 +02:00
renovate[bot]
f6489fa0b5 chore(deps): update dependency ruff to v0.4.3 2024-05-06 09:45:50 +00:00
renovate[bot]
643296e083
chore(deps): lock file maintenance (#327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 10:28:41 +02:00
renovate[bot]
01fe9c85d3 chore(deps): update devdeps non-major 2024-04-29 03:20:30 +00:00
renovate[bot]
2120f70dc9 chore(deps): update dependency ruff to v0.4.1 2024-04-22 03:21:38 +00:00
renovate[bot]
0a3eb0b962 chore(deps): update dependency ruff to v0.3.7 2024-04-15 06:37:18 +00:00
renovate[bot]
42e31653c2
chore(deps): lock file maintenance (#319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 09:17:45 +02:00
renovate[bot]
ebd4eac587 chore(docker): update python:3.12-alpine docker digest to ef09762 2024-04-11 03:50:04 +00:00
renovate[bot]
c24a6b3cdd chore(deps): update devdeps non-major 2024-04-08 05:17:44 +00:00
renovate[bot]
5f042adcf3
chore(deps): update dependency pytest-cov to v5 (#320)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 09:05:42 +02:00
renovate[bot]
31fd0eb50e
chore(deps): update quay.io/thegeeklab/wp-docker-buildx docker tag to v4 (#321)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 09:05:20 +02:00
renovate[bot]
35befa5aaa chore(docker): update python:3.12-alpine docker digest to c7eb5c9 2024-04-02 05:03:26 +00:00
renovate[bot]
9dcb54313b chore(deps): update dependency ruff to v0.3.3 2024-03-18 03:38:46 +00:00
renovate[bot]
01b2921d7d chore(docker): update python:3.12-alpine docker digest to 25a82f6 2024-03-17 04:33:49 +00:00
fd23fe40e7
ci: fix deprecated ruff command 2024-03-12 20:52:54 +01:00
renovate[bot]
0b81a2f5d5
chore(deps): lock file maintenance (#316)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 09:39:11 +01:00
renovate[bot]
033d549aa0
chore(deps): update devdeps non-major (#315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2024-03-11 09:38:58 +01:00
renovate[bot]
30dadde4f4 chore(deps): update devdeps non-major 2024-03-04 04:10:09 +00:00
renovate[bot]
d5a3c5fca7
chore(deps): lock file maintenance (#313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-26 10:42:19 +01:00
renovate[bot]
f5f4a5be16 chore(deps): update dependency pytest to v8.0.2 2024-02-26 04:04:42 +00:00
renovate[bot]
ddd56aadee chore(deps): update devdeps non-major 2024-02-19 03:33:32 +00:00
10ece51322
[skip ci] revert renovate automerge config 2024-02-15 12:23:09 +01:00
529e701586
enable renovate on automerge branches 2024-02-09 23:08:31 +01:00
renovate[bot]
2852334ddc chore(docker): update python:3.12-alpine docker digest to 1a05012 2024-02-09 07:25:55 +00:00
0fb0e1124e
chore: bump ruff to v0.2.1 (#309) 2024-02-06 09:34:25 +01:00
renovate[bot]
2cdb9e67d6
chore(deps): update dependency pytest to v8 (#307)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 09:05:08 +01:00
renovate[bot]
023495b89b chore(docker): update python:3.12-alpine docker digest to 14cfc61 2024-01-29 11:28:24 +00:00
renovate[bot]
47f575e95c
chore(deps): update quay.io/thegeeklab/wp-docker-buildx docker tag to v3 (#306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-22 11:29:29 +01:00
renovate[bot]
62c5469995 chore(deps): update dependency ruff to v0.1.14 2024-01-22 04:30:28 +00:00
renovate[bot]
9032f0e1aa chore(docker): update python:3.12-alpine docker digest to 801b54e 2024-01-20 00:34:33 +00:00
renovate[bot]
b6941b2851 chore(docker): update python:3.12-alpine docker digest to 4a156f7 2024-01-19 10:47:15 +00:00
renovate[bot]
e2443e73d4
chore(deps): lock file maintenance (#296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-15 21:57:38 +01:00
renovate[bot]
403dd9840b
chore(deps): update dependency ruff to v0.1.13 (#302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2024-01-15 20:39:53 +01:00
renovate[bot]
641c8bcfc1 chore(deps): update dependency ruff to v0.1.11 2024-01-08 03:46:06 +00:00
renovate[bot]
8e1309f07e chore(deps): update dependency pytest to v7.4.4 2024-01-01 03:48:11 +00:00
renovate[bot]
bd578c1550 chore(deps): update dependency ruff to v0.1.9 2023-12-25 03:58:49 +00:00
c389bb1ffe
disable renovate for python test matrix in ci 2023-12-24 00:03:57 +01:00
b57eac1205
use list style synatx and cleanup (#297) 2023-12-23 23:25:08 +01:00
renovate[bot]
210ead10a8 chore(deps): update dependency ruff to v0.1.8 2023-12-18 04:44:33 +00:00
42355fbb9b
cleanup unused env vars in ci 2023-12-17 14:08:00 +01:00
renovate[bot]
81feb30694 chore(deps): update dependency ruff to v0.1.7 2023-12-11 03:49:54 +00:00
renovate[bot]
d29b0dd77b chore(docker): update python:3.12-alpine docker digest to c793b92 2023-12-09 09:15:35 +00:00
20e2e6a8c7
ci: exclude dockerhub from linkcheck due to rate limiting 2023-12-07 09:08:27 +01:00
renovate[bot]
a177e97e61
chore(deps): update quay.io/thegeeklab/wp-docker-buildx docker tag to v2 (#292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 08:40:17 +01:00
renovate[bot]
1357353e3d
chore(deps): lock file maintenance (#290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-06 09:12:51 +01:00
renovate[bot]
c409b85022 chore(docker): update python:3.12-alpine docker digest to 09f18c1 2023-12-05 01:43:20 +00:00
cbd67653e1
fix settings for required status checks 2023-12-04 21:01:51 +01:00
renovate[bot]
347388472d chore(deps): update dependency ruff to v0.1.6 2023-11-20 04:21:30 +00:00
renovate[bot]
03ba6481c7 chore(deps): update dependency ruff to v0.1.5 2023-11-13 05:16:42 +00:00
efd778e162
chore: drop yapf and favor of the ruff formatter (#287) 2023-11-10 09:27:37 +01:00
renovate[bot]
77f087840d
chore(deps): update devdeps non-major (#284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-04 22:19:13 +01:00
e7dd82cf92
fix!: drop support for python 3.7 (#286) 2023-11-04 22:06:30 +01:00
3c4b7d9f9d
ci: cleanup matrix build name (#285) 2023-11-04 16:19:02 +01:00
renovate[bot]
e5ec7bb741 chore(docker): update python:3.12-alpine docker digest to a5d1738 2023-10-19 14:07:22 +00:00
584054dda0
ci: fix changelog generation 2023-10-18 13:59:25 +02:00
36cdffcca1
chore: replace linkcheck by lychee (#282) 2023-10-16 21:34:21 +02:00
d4fc4357cc
chore: replace git-chglog by git-sv (#281) 2023-10-16 15:42:52 +02:00
renovate[bot]
6f67c32841
chore(deps): lock file maintenance (#278)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 14:29:07 +02:00
d5f06425dd
feat: add support for python 3.12 (#280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 14:15:31 +02:00
e867939a71
fix: remove deprecated distutils (#279) 2023-10-16 12:11:09 +02:00
renovate[bot]
42d61889e8
chore(deps): lock file maintenance (#273)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-09 14:58:08 +02:00
renovate[bot]
7f173f1423 chore(deps): update dependency ruff to v0.0.292 2023-10-09 03:07:23 +00:00
renovate[bot]
fa3e1c7fb8 chore(docker): update python:3.11-alpine docker digest to 3e73c0b 2023-10-03 12:44:57 +00:00
renovate[bot]
2edda529c6 chore(docker): update python:3.11-alpine docker digest to cd311c6 2023-09-29 17:25:54 +00:00
renovate[bot]
529fd0b8f5 chore(deps): update devdeps non-major 2023-09-25 03:05:44 +00:00
renovate[bot]
e8726e0f3b chore(deps): update dependency ruff to v0.0.290 2023-09-18 05:12:37 +00:00
renovate[bot]
5faea1240d chore(deps): update dependency pytest to v7.4.2 2023-09-11 03:06:57 +00:00
renovate[bot]
70f720dc3b chore(deps): update devdeps non-major 2023-09-04 03:53:21 +00:00
renovate[bot]
2d6fb5c6e7 chore(deps): update dependency ruff to v0.0.286 2023-08-28 04:44:19 +00:00
renovate[bot]
b7b229695c chore(docker): update python:3.11-alpine docker digest to 5d769f9 2023-08-26 09:32:40 +00:00
b21d62c78d
fix: use poetry-dynamic-versioning backend wrapper 2023-08-25 00:28:39 +02:00
renovate[bot]
12ef38313f
chore(deps): lock file maintenance (#249)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 23:28:26 +02:00
f8f95fe649
ci: migrate to woodpecker (#265) 2023-08-24 23:24:38 +02:00
renovate[bot]
aacc74124a chore(deps): update dependency ruff to v0.0.285 2023-08-21 04:32:15 +00:00
renovate[bot]
96b589f59a chore(deps): update dependency ruff to v0.0.284 2023-08-14 03:25:28 +00:00
renovate[bot]
cdb138c41c chore(docker): update python:3.11-alpine docker digest to 603975e 2023-08-09 12:53:20 +00:00
renovate[bot]
70a4fa057c chore(docker): update python:3.11-alpine docker digest to 4352dc7 2023-08-09 06:19:05 +00:00
renovate[bot]
2a1d056adb chore(docker): update python:3.11-alpine docker digest to f54f860 2023-08-09 04:28:10 +00:00
renovate[bot]
7abc232810 chore(docker): update python:3.11-alpine docker digest to bd16cc5 2023-08-08 10:32:40 +00:00
renovate[bot]
3df02e4a3e chore(deps): update dependency ruff to v0.0.282 2023-08-07 04:05:26 +00:00
renovate[bot]
443269ae71 chore(deps): update dependency ruff to v0.0.280 2023-07-24 03:31:57 +00:00
renovate[bot]
fb81c8bdb8 chore(deps): update dependency ruff to v0.0.278 2023-07-17 04:47:24 +00:00
renovate[bot]
25e9bd47c4 chore(deps): update dependency ruff to v0.0.277 2023-07-10 04:32:36 +00:00
renovate[bot]
c2144e0f1b
chore(deps): update devdeps non-major (#254)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
2023-06-28 09:55:30 +02:00
renovate[bot]
b1e08ae0d1 chore(deps): update devdeps non-major 2023-06-19 04:40:30 +00:00
renovate[bot]
9be186eaba chore(docker): update python:3.11-alpine docker digest to 25df32b 2023-06-15 15:30:48 +00:00
renovate[bot]
24c4073be2 chore(deps): update devdeps non-major 2023-06-12 03:52:49 +00:00
renovate[bot]
9878326fc2 chore(docker): update python:3.11-alpine docker digest to 995c7fc 2023-06-08 03:26:21 +00:00
7f20729c37
fix: add stdout as fallback if no out file is defined (#248) 2023-05-30 14:07:30 +02:00
renovate[bot]
9cc91ca493
chore(deps): lock file maintenance (#231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-29 12:42:31 +02:00
renovate[bot]
677db3edd1
chore(deps): update devdeps non-major (#246) 2023-05-28 23:07:52 +02:00
25e1e420d6
chore: remove poetry experimental.new-installer flag (#247) 2023-05-28 15:18:43 +02:00
renovate[bot]
63c888c631 chore(docker): update python:3.11-alpine docker digest to 4e8e9a5 2023-05-12 21:16:31 +00:00
renovate[bot]
ee0753d4b7 chore(docker): update python:3.11-alpine docker digest to 2f2dadb 2023-05-12 12:17:53 +00:00
renovate[bot]
8df30bc6c0 chore(deps): update dependency ruff to v0.0.265 2023-05-08 04:27:54 +00:00
renovate[bot]
4cae9c5995 chore(docker): update python:3.11-alpine docker digest to 7210235 2023-05-03 23:18:17 +00:00
03d67ff147
fix bare url in contribution file (#241) 2023-05-03 09:31:23 +02:00
renovate[bot]
e8cc0165e4 chore(docker): update python:3.11-alpine docker digest to b639067 2023-05-03 06:33:59 +00:00
renovate[bot]
2c9fd53544 chore(deps): update dependency ruff to v0.0.263 2023-05-01 04:08:59 +00:00
renovate[bot]
f8ac7e81fe chore(deps): update devdeps non-major 2023-04-24 05:49:08 +00:00
f9ab6bb9f3
ci: switch to new codecov uploader (#237) 2023-04-17 16:22:15 +02:00
renovate[bot]
6fe925dd32 chore(deps): update devdeps non-major 2023-04-10 03:23:00 +00:00
renovate[bot]
9480584999 chore(docker): update python:3.11-alpine docker digest to 507818d 2023-04-08 08:03:01 +00:00
renovate[bot]
5ae3030353 chore(docker): update python:3.11-alpine docker digest to 5405826 2023-04-06 13:08:36 +00:00
renovate[bot]
19e20e7bf0 chore(docker): update python:3.11-alpine docker digest to 4b4078a 2023-03-30 06:43:00 +00:00
renovate[bot]
f630cb16de chore(docker): update python:3.11-alpine docker digest to e8cd6ca 2023-03-30 05:02:07 +00:00
renovate[bot]
25fe648f46 chore(deps): update dependency ruff to v0.0.259 2023-03-27 06:33:29 +00:00
renovate[bot]
6612a115c8 chore(docker): update python:3.11-alpine docker digest to 8af856d 2023-03-25 01:25:02 +00:00
renovate[bot]
ea1a771303 chore(docker): update python:3.11-alpine docker digest to 506eed4 2023-03-23 20:09:45 +00:00
renovate[bot]
f729a8bb98
chore(deps): lock file maintenance (#222) 2023-03-20 10:35:34 +01:00
renovate[bot]
32829d469d
fix(deps): update dependency python-json-logger to v2.0.7 (#226) 2023-03-20 10:34:54 +01:00
renovate[bot]
e91d02201d chore(deps): update dependency ruff to v0.0.257 2023-03-20 04:56:24 +00:00
renovate[bot]
9e0bd522f8 chore(docker): update python:3.11-alpine docker digest to 741e650 2023-03-14 17:12:56 +00:00
a1fbabd605
chore: exclude ruff linter rule UP038 (#224) 2023-03-07 14:21:42 +01:00
renovate[bot]
3f5a5ac6a2 chore(deps): update devdependencies (non-major) 2023-03-06 03:56:36 +00:00
renovate[bot]
38dc002456 chore(deps): update dependency ruff to v0.0.252 2023-02-27 06:53:57 +00:00
renovate[bot]
7dbdc9d2bc chore(docker): update python:3.11-alpine docker digest to 1a5c146 2023-02-25 14:04:09 +00:00
renovate[bot]
0bbc2922be chore(deps): update dependency ruff to v0.0.246 2023-02-13 10:48:37 +00:00
8fe82a7d65
refctor: migrate flake8 to ruff python linter (#216) 2023-02-12 13:40:45 +01:00
renovate[bot]
c356b55b9b chore(docker): update python:3.11-alpine docker digest to 8463061 2023-02-11 21:01:40 +00:00
16137e064c
ci: bump container build plugin to drone-docker-buildx:23 (#214) 2023-02-09 19:41:01 +01:00
renovate[bot]
57e8c9ffac chore(docker): update python:3.11-alpine docker digest to deb0f63 2023-02-09 16:49:37 +00:00
cbffcb6c79
fix drone-matrix template (#212) 2023-02-08 21:55:30 +01:00
renovate[bot]
d2fb6d7438
chore(deps): lock file maintenance (#207) 2023-02-08 10:03:33 +01:00
renovate[bot]
b3a481a7a1 chore(docker): update python:3.11-alpine docker digest to d8b0703 2023-02-04 11:54:27 +00:00
renovate[bot]
3bd1b660b4 chore(docker): update python:3.11-alpine docker digest to ca1298a 2023-01-24 11:50:17 +00:00
renovate[bot]
bf23653e19 chore(deps): update dependency pydocstyle to v6.3.0 2023-01-23 05:05:37 +00:00
renovate[bot]
805ef9b670 chore(docker): update python:3.11-alpine docker digest to 625383c 2023-01-18 13:03:20 +00:00
c886d6cc0f
refactor: use buildx for multiarch container builds (#205) 2023-01-16 09:10:30 +01:00
renovate[bot]
73b11be5d3 chore(deps): update devdependencies (non-major) 2023-01-16 02:53:02 +00:00
renovate[bot]
792e7eb6b1 chore(docker): update docker digests 2023-01-10 08:25:38 +00:00
renovate[bot]
af74262c0a
chore(deps): lock file maintenance (#199) 2023-01-09 21:17:36 +01:00
renovate[bot]
b7ac6fc58a chore(docker): update docker digests 2023-01-08 18:14:45 +00:00
a79e8c5b81
chore: remove support for arm32 (#203)
BREAKING CHANGE: We dropped the arm32 platform support and builds.
2023-01-08 16:12:16 +01:00
renovate[bot]
6080b89b69
chore(deps): update dependency flake8-isort to v6 (#200) 2023-01-03 14:15:16 +01:00
renovate[bot]
9d771d78c1 chore(deps): update devdependencies (non-major) 2022-12-26 04:49:02 +00:00
renovate[bot]
168e67afbb
chore(docker): update docker digests (#197) 2022-12-09 22:40:38 +01:00
renovate[bot]
27bd048a67
chore(deps): lock file maintenance (#188) 2022-12-09 22:40:28 +01:00
renovate[bot]
31357ec4de chore(docker): update docker digests 2022-11-30 06:36:56 +00:00
renovate[bot]
7c78573d87 chore(deps): update dependency flake8-logging-format to v0.9.0 2022-11-28 04:05:14 +00:00
253f4e2c28
ci: use python311 base image on ci (#194) 2022-11-24 21:35:35 +01:00
renovate[bot]
c71deeff2d chore(deps): update dependency flake8-isort to v5.0.3 2022-11-21 04:57:19 +00:00
renovate[bot]
cb00a19273 chore(docker): update docker digests 2022-11-16 17:06:52 +00:00
renovate[bot]
a236a12d5f chore(docker): update docker digests 2022-11-12 14:40:21 +00:00
renovate[bot]
ab7422c735 chore(docker): update docker digests 2022-11-11 06:21:42 +00:00
renovate[bot]
32b2fb1e28 chore(deps): update dependency flake8-builtins to v2.0.1 2022-11-07 04:53:02 +00:00
e01356b1fe
ci: add test step for python 11 (#186) 2022-11-02 13:01:37 +01:00
renovate[bot]
22f0f390a7
chore(deps): lock file maintenance (#185) 2022-11-02 09:11:08 +01:00
renovate[bot]
44724e408f chore(deps): update dependency pytest to v7.2.0 2022-10-31 06:14:47 +00:00
renovate[bot]
04bbeaca66
chore(deps): lock file maintenance (#168) 2022-10-25 21:28:18 +02:00
renovate[bot]
0721d6e176
fix(deps): update dependency colorama to v0.4.6 (#179) 2022-10-25 21:28:10 +02:00
renovate[bot]
7dcff5b553
chore(deps): update python docker tag to v3.11 (#181) 2022-10-25 21:28:03 +02:00
renovate[bot]
5a683e5a04
chore(deps): update arm64v8/python docker tag to v3.11 (#180) 2022-10-25 21:27:46 +02:00
renovate[bot]
e3ef3b2fa7
chore(deps): update arm32v7/python docker tag to v3.11 (#183) 2022-10-25 21:27:37 +02:00
renovate[bot]
d494f3e6db chore(docker): update docker digests 2022-10-25 16:57:25 +00:00
renovate[bot]
054fef98e4 chore(docker): update docker digests 2022-10-25 09:47:58 +00:00
renovate[bot]
c57c6914e1 chore(docker): update docker digests 2022-10-20 22:57:30 +00:00
renovate[bot]
59ff380fc2 chore(deps): update dependency pytest-mock to v3.10.0 2022-10-10 03:23:01 +00:00
renovate[bot]
70ce89f138
chore(deps): update dependency flake8-builtins to v2 (#173) 2022-10-09 16:31:06 +02:00
renovate[bot]
76ac9f4fc9
chore(deps): update dependency flake8-pep3101 to v2 (#174) 2022-10-09 13:41:54 +02:00
renovate[bot]
45594aff05
chore(deps): update dependency flake8-isort to v5 (#175) 2022-10-09 11:34:49 +02:00
renovate[bot]
83baed69a5 chore(docker): update python:3.10-alpine docker digest to 486782e 2022-10-08 07:57:45 +00:00
renovate[bot]
ece672c816 chore(docker): update docker digests 2022-10-07 11:59:00 +00:00
renovate[bot]
3b405ab5db chore(deps): update devdependencies (non-major) 2022-10-03 05:05:40 +00:00
renovate[bot]
1529cdfb84
chore(deps): update dependency pytest-cov to v4 (#169) 2022-09-29 08:54:31 +02:00
renovate[bot]
3ce6396fa1 chore(deps): update dependency flake8-eradicate to v1.4.0 2022-09-26 04:36:28 +00:00
renovate[bot]
f6d176bb7d
chore(deps): lock file maintenance (#163) 2022-09-19 09:06:17 +02:00
renovate[bot]
e3347e1275 chore(docker): update docker digests 2022-09-08 15:36:29 +00:00
renovate[bot]
32d0ef100e chore(deps): update devdependencies (non-major) 2022-09-05 04:38:06 +00:00
renovate[bot]
f061937dbc
chore(deps): lock file maintenance (#149)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-22 09:59:21 +02:00
renovate[bot]
01859dfc3b
chore(deps): update dependency flake8 to v5 (#153)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-22 08:39:59 +02:00
renovate[bot]
6d28c9a6fb
chore(deps): update devdependencies (non-major) (#161) 2022-08-21 23:40:21 +02:00
renovate[bot]
2ac49f98df chore(docker): update docker digests 2022-08-11 09:46:54 +00:00
renovate[bot]
2fe2665426 chore(docker): update docker digests to 3fe6aa2 2022-08-10 11:48:23 +00:00
renovate[bot]
35b06157a7 chore(deps): update dependency flake8-isort to v4.2.0 2022-08-08 05:11:24 +00:00
renovate[bot]
841b4045ff chore(docker): update python digest to 4543fd9 2022-08-04 20:39:57 +00:00
renovate[bot]
20b705d1c6 chore(docker): update docker digests to 4fd92f2 2022-08-03 15:51:45 +00:00
renovate[bot]
4ed334480a chore(docker): update python digest to ffc9076 2022-08-03 06:00:43 +00:00
renovate[bot]
a895ad1236 chore(deps): update dependency flake8-isort to v4.1.2.post0 2022-08-01 03:13:35 +00:00
renovate[bot]
66b1af0494 chore(docker): update docker digests to dcc75b5 2022-07-27 17:18:55 +00:00
renovate[bot]
8f3148e5a0 chore(docker): update docker digests to fe93ef5 2022-07-27 10:31:01 +00:00
cd00b2d8b1
[skip ci] adjust repo config 2022-07-21 09:50:59 +02:00
renovate[bot]
bcf579b7a7 chore(docker): update docker digests to 8042f9a 2022-07-19 13:42:49 +00:00
renovate[bot]
ce05171e0c chore(deps): update dependency pep8-naming to v0.13.1 2022-07-18 01:46:17 +00:00
e124c7aeef
docs: fix spelling in readme 2022-07-15 08:50:08 +02:00
renovate[bot]
b17b71b3bc
fix(deps): update dependency python-json-logger to v2.0.4 (#147) 2022-07-13 10:31:31 +02:00
renovate[bot]
f150e4abd3
chore(deps): lock file maintenance (#144) 2022-07-11 13:29:05 +02:00
renovate[bot]
44763205a6
fix(deps): update dependency python-json-logger to v2.0.3 (#145) 2022-07-11 10:48:46 +02:00
renovate[bot]
9013547254 chore(deps): update dependency pytest-mock to v3.8.2 2022-07-11 04:09:24 +00:00
renovate[bot]
8f65adfee8 chore(deps): update dependency pytest-mock to v3.8.1 2022-06-27 05:30:15 +00:00
renovate[bot]
542c02582c
chore(deps): lock file maintenance (#142) 2022-06-20 10:59:37 +02:00
renovate[bot]
0687883ed5
chore(deps): lock file maintenance (#140) 2022-06-19 14:48:57 +02:00
renovate[bot]
728ea3bfa6
fix(deps): update dependency colorama to v0.4.5 (#141) 2022-06-19 14:47:44 +02:00
renovate[bot]
9855397550
chore(deps): lock file maintenance (#137) 2022-06-08 16:29:14 +02:00
3813f7c6b1
feat: add option DOCKER_AUTOTAG_SUFFIX_STRICT (#139) 2022-06-08 15:32:30 +02:00
Renovate Bot
ce991cc745 chore(docker): update docker digests to 22fb80b 2022-06-08 03:02:05 +00:00
Renovate Bot
b9a6b9aa21 chore(deps): update dependency pep8-naming to v0.13.0 2022-06-06 05:38:32 +00:00
Renovate Bot
b3623bae2f chore(docker): update docker digests to 7467540 2022-06-03 03:45:47 +00:00
renovate[bot]
9fc8f8aafb
chore(deps): lock file maintenance (#132) 2022-06-02 21:24:30 +02:00
renovate[bot]
6a7fe173b7
fix(deps): update dependency semantic-version to v2.10.0 (#134) 2022-06-02 21:24:18 +02:00
Renovate Bot
dfccb78e2d chore(docker): update docker digests to 4051162 2022-05-26 03:54:30 +00:00
renovate[bot]
556e1072cb
chore(deps): lock file maintenance (#108) 2022-05-21 13:21:16 +02:00
Renovate Bot
14acdb3c95 chore(docker): update docker digests to b1c7b16 2022-05-18 14:29:49 +00:00
Renovate Bot
dbecd818f6 chore(deps): update devdependencies (non-major) 2022-05-02 05:00:31 +00:00
Renovate Bot
41c0f80de6 chore(docker): update docker digests to 032fd45 2022-04-20 20:34:02 +00:00
Renovate Bot
0ae56a8755 chore(docker): update docker digests to 49d6cf8 2022-04-14 22:55:37 +00:00
Renovate Bot
bd72e12855 chore(docker): update docker digests to 31f39ec 2022-04-14 13:24:22 +00:00
Renovate Bot
339f0b5582 chore(docker): update docker digests to 3703b9d 2022-04-07 20:08:21 +00:00
Renovate Bot
1625329018 chore(docker): update docker digests to e619558 2022-04-05 22:24:39 +00:00
Renovate Bot
5cc70a7930 chore(docker): update docker digests to 0822e90 2022-04-05 14:20:27 +00:00
f577139a45
chore: adjust yapf dict formatting to avoid line breaks (#123) 2022-04-04 22:26:38 +02:00
Renovate Bot
46a0fe286f chore(docker): update docker digests to b927a8a 2022-03-30 20:01:19 +00:00
Renovate Bot
f4fa2440d9 chore(docker): update docker digests to 289e6ba 2022-03-30 01:15:35 +00:00
Renovate Bot
e196a1bbe5 chore(docker): update python digest to bbf8cad 2022-03-29 14:45:16 +00:00
Renovate Bot
600fd724a1 chore(docker): update docker digests to dfdc8ff 2022-03-25 12:39:53 +00:00
Renovate Bot
6e6811f6c7 chore(docker): update docker digests to 87eded0 2022-03-24 11:34:57 +00:00
Renovate Bot
540b6545f1 chore(docker): update docker digests to 7393522 2022-03-24 05:53:51 +00:00
Renovate Bot
e9863a7c5f chore(deps): update devdependencies (non-major) 2022-03-21 05:31:06 +00:00
Renovate Bot
c399903c6d chore(docker): update docker digests to 9a1e361 2022-03-17 19:59:36 +00:00
Renovate Bot
efe8f8b46a chore(deps): update dependency pytest to v7.1.0 2022-03-14 04:53:53 +00:00
Renovate Bot
9fda149c3d chore(docker): update docker digests to bdf7490 2022-03-08 13:13:23 +00:00
Renovate Bot
2e8c92002c chore(deps): update dependency bandit to v1.7.4 2022-03-07 05:16:41 +00:00
Renovate Bot
f7e9bed02d chore(deps): update dependency bandit to v1.7.3 2022-02-28 02:56:39 +00:00
Renovate Bot
0e8ef41d9b chore(docker): update docker digests to 9871be3 2022-02-26 13:07:28 +00:00
Renovate Bot
8f7472a489 chore(docker): update docker digests to 1a3046e 2022-02-24 08:41:17 +00:00
renovate[bot]
0853bee5d4
chore(deps): lock file maintenance (#100) 2022-02-15 20:45:22 +01:00
renovate[bot]
829acce8fa
fix(deps): update dependency semantic-version to v2.9.0 (#105) 2022-02-15 20:45:06 +01:00
Renovate Bot
f0719ca533 chore(docker): update docker digests to c1a3d00 2022-02-14 10:35:07 +00:00
Renovate Bot
7ffa8ffedd chore(deps): update dependency pytest to v7.0.1 2022-02-14 02:36:39 +00:00
renovate[bot]
c683682f9b
chore(deps): update dependency pytest to v7 (#103) 2022-02-07 13:47:58 +01:00
6a73de0d41
fix: add toml to dev dependencies as yapf requirement (#104) 2022-02-05 15:01:39 +01:00
Renovate Bot
f97127c625 chore(deps): update dependency pytest-mock to v3.7.0 2022-01-28 13:39:46 +00:00
Renovate Bot
55367940ae chore(deps): update dependency bandit to v1.7.2 2022-01-26 03:55:16 +00:00
renovate[bot]
e50a630244
chore(deps): lock file maintenance (#99) 2022-01-10 09:09:59 +01:00
2abf6798f5
chore: add build deps to Dockerfile (#98) 2022-01-09 22:08:36 +01:00
renovate[bot]
635c1f4942
chore(deps): lock file maintenance (#94) 2022-01-07 14:13:25 +01:00
Renovate Bot
b49127f7bc chore(deps): update dependency yapf to v0.32.0 2021-12-26 09:59:03 +00:00
f2f82007bd
chore: end of the year maintenance 2021-12-21 10:15:40 +01:00
6c4e6b86bc
chore: adjust changelog template to link to prs instead of issues (#95) 2021-12-12 13:25:54 +01:00
Renovate Bot
d7807ef46c chore(docker): update docker digests 2021-11-28 14:13:07 +00:00
renovate[bot]
a3c2a76868
chore(deps): lock file maintenance (#91) 2021-11-28 14:07:39 +01:00
Renovate Bot
467d2072f1 chore(deps): update dependency bandit to v1.7.1 2021-11-12 15:45:47 +00:00
renovate[bot]
c27a953cbf
chore(deps): update dependency flake8 to v4 (#87) 2021-10-20 17:02:41 +02:00
Renovate Bot
b187d07a35 chore(deps): update dependency flake8-eradicate to v1.2.0 2021-10-19 19:48:41 +00:00
Renovate Bot
486ccc9a4f chore(deps): update dependency flake8-quotes to v3.3.1 2021-10-19 09:09:53 +00:00
Renovate Bot
6646811ec5 chore(deps): update dependency flake8-isort to v4.1.1 2021-10-14 14:27:24 +00:00
renovate[bot]
1413d1133b
chore(deps): lock file maintenance (#86)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-11 09:33:55 +02:00
f2df28eecb
fix: fix format string of the json logger (#85) 2021-10-07 22:59:49 +02:00
e4c2fe2e09
feat: add python3.10 support (#83) 2021-10-07 09:52:52 +02:00
Renovate Bot
0a8b49e0a6 chore(docker): update python:3.10-alpine docker digest to c13a6cf 2021-10-07 07:24:33 +00:00
renovate[bot]
86c301435c
chore(deps): update arm64v8/python docker tag to v3.10 (#79)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-06 20:44:54 +02:00
renovate[bot]
6b1ccc40f4
chore(deps): update arm32v7/python docker tag to v3.10 (#82)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-06 20:44:49 +02:00
renovate[bot]
aab55887a5
chore(deps): update python docker tag to v3.10 (#80)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-06 20:44:33 +02:00
Renovate Bot
61e4faded4 chore(docker): update docker digests 2021-10-06 08:37:12 +00:00
Renovate Bot
c8716c59d4 chore(docker): update docker digests 2021-10-06 03:56:34 +00:00
Renovate Bot
0191a571bc chore(docker): update docker digests 2021-10-05 09:25:49 +00:00
renovate[bot]
3d60588dbd
chore(deps): update dependency pytest-cov to v3 (#76)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-10-04 16:52:44 +02:00
584ed22ef5
BREAKING CHANGE: drop Python 3.6 support (#75) 2021-10-03 16:10:31 +02:00
renovate[bot]
08dfe75a73
chore(deps): lock file maintenance (#74)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-09-27 09:31:58 +02:00
6725e45f13
improve changelog template 2021-09-22 11:50:42 +02:00
f9ada5b9ae
improve drone-matrix template 2021-09-22 09:31:12 +02:00
renovate[bot]
0679b1cab0
chore(deps): lock file maintenance (#67)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-09-20 09:54:35 +02:00
5d48142528
ci: switch to drone-matrix plugin (#73) 2021-09-19 22:09:41 +02:00
1427381195
regenerate drone config 2021-09-13 10:53:45 +02:00
Renovate Bot
254eb30ca5 chore(deps): update dependency pytest to v6.2.5 2021-08-30 20:07:08 +00:00
Renovate Bot
51c94a916e chore(docker): update docker digests 2021-08-24 12:50:11 +00:00
Renovate Bot
d04176116f chore(deps): update dependency flake8-quotes to v3.3.0 2021-08-23 11:18:27 +00:00
Renovate Bot
e8ba2010c3 chore(deps): update dependency pep8-naming to v0.12.1 2021-08-08 04:26:28 +00:00
Renovate Bot
3186eff88e chore(deps): update dependency pdoc3 to v0.10.0 2021-08-03 16:51:47 +00:00
Renovate Bot
049707e4b0 chore(deps): update python:3.9-alpine docker digest 2021-07-31 23:56:39 +00:00
Renovate Bot
3a71e8792b chore(deps): update docker digests 2021-07-31 22:31:51 +00:00
renovate[bot]
80e73e5e40
chore(deps): lock file maintenance (#63)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-07-29 10:10:23 +02:00
renovate[bot]
b38bec2ed4
fix(deps): update dependency python-json-logger to v2.0.2 (#64)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-07-29 10:09:50 +02:00
renovate[bot]
b83e742db0
chore(deps): lock file maintenance (#60)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-07-15 09:06:37 +02:00
Renovate Bot
ec7a119f5d chore(deps): update docker digests 2021-07-14 23:44:58 +00:00
Renovate Bot
dd64edd16f chore(deps): update dependency pep8-naming to v0.12.0 2021-07-07 13:04:37 +00:00
164b1acd4a
chore: replace libressl-dev by openssl-dev (#59) 2021-06-30 09:01:37 +02:00
renovate[bot]
fad67a9d22
chore(deps): lock file maintenance (#58)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-06-28 08:44:25 +02:00
Renovate Bot
f84ebeb7c6 chore(deps): update dependency flake8-eradicate to v1.1.0 2021-06-22 12:06:27 +00:00
renovate[bot]
e9e2914137
chore(deps): lock file maintenance (#56)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-06-21 09:23:20 +02:00
6ab61fa9d2
chore: disable rule D105 in flake 2021-06-09 20:59:01 +02:00
renovate[bot]
0fe223ca5d
chore(deps): lock file maintenance (#55)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-06-07 09:21:43 +02:00
Renovate Bot
efe8e1f603 chore(deps): update dependency pytest-cov to v2.12.1 2021-06-01 19:39:55 +00:00
renovate[bot]
92d11fa811
chore(deps): lock file maintenance (#53)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-05-31 10:24:09 +02:00
Renovate Bot
d988540fa9 chore(deps): update dependency requests-mock to v1.9.3 2021-05-28 08:54:42 +00:00
Renovate Bot
6c73c7bac7 chore(deps): update arm64v8/python:3.9-alpine docker digest 2021-05-27 15:18:08 +00:00
Renovate Bot
7c62c6845b chore(deps): update arm32v7/python:3.9-alpine docker digest 2021-05-26 17:36:17 +00:00
4836a36e88
[skip ci] fix github settings syntax 2021-05-25 18:01:04 +02:00
Renovate Bot
198b843ce5 chore(deps): update amd64/python:3.9-alpine docker digest 2021-05-24 21:48:16 +00:00
renovate[bot]
dfb3dfc9b9
chore(deps): lock file maintenance (#48)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-05-24 13:18:48 +02:00
Renovate Bot
d3f9187475 chore(deps): update dependency pydocstyle to v6.1.1 2021-05-17 23:14:29 +00:00
Renovate Bot
5853b86cc0 chore(deps): update dependency pydocstyle to v6.1.0 2021-05-17 20:46:24 +00:00
renovate[bot]
e7777e8615
chore(deps): lock file maintenance (#45)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-05-17 09:46:58 +02:00
Renovate Bot
7dd032e8f4 chore(deps): update dependency pytest-cov to v2.12.0 2021-05-14 12:41:21 +00:00
renovate[bot]
9081c57e71
chore(deps): lock file maintenance (#41)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Robert Kaussow <mail@geeklabor.de>
2021-05-11 00:22:39 +02:00
Renovate Bot
0d8e5c15fa chore(deps): update devdependencies (non-major) 2021-05-10 21:30:26 +00:00
66ebb7f3c7
chore: pin package versions (#42) 2021-05-10 22:08:05 +02:00
7dd4877ae2
chore: improve generated changelog (#40) 2021-05-09 23:18:58 +02:00
Renovate Bot
afaa5e6613 chore(deps): update docker digests 2021-05-07 13:43:11 +00:00
Renovate Bot
492ea2f821 chore(deps): update docker digests 2021-04-15 11:17:48 +00:00
e274cd18ae
chore: remove dev dependency flake8-colors (#37) 2021-04-12 09:50:09 +02:00
Renovate Bot
9785654019 chore(deps): update arm64v8/python:3.9-alpine docker digest to 0a685ca 2021-04-06 00:20:53 +00:00
Renovate Bot
71b40b0490 chore(deps): update docker digests 2021-04-05 21:26:05 +00:00
Renovate Bot
c57ab34eb0 chore(deps): update arm64v8/python:3.9-alpine docker digest to a03b784 2021-04-03 06:43:05 +00:00
Renovate Bot
169e076fe2 chore(deps): update docker digests 2021-04-03 02:34:05 +00:00
Renovate Bot
1ead4e5ff5 chore(deps): update docker digests 2021-04-01 11:46:31 +00:00
Renovate Bot
98366deb69 chore(deps): update docker digests 2021-03-26 15:08:42 +00:00
renovate[bot]
100a20224a
chore(deps): update arm32v7/python:3.9-alpine docker digest to 7c62c7f (#30)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-26 09:31:07 +01:00
739924f28d
ci: auto-generate changelog (#29)
* ci: auto-generate changelog

* cleanup
2021-03-23 21:08:32 +01:00
renovate[bot]
7f6cfb0be2
chore(deps): update dependency pydocstyle to v6 (#28)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-20 16:00:40 +01:00
Renovate Bot
a805bd3e9d chore(deps): update dependency yapf to ^0.31.0 2021-03-13 08:51:54 +00:00
Renovate Bot
1908cd2482 chore(deps): update amd64/python:3.9-alpine docker digest to d73b7b4 2021-03-13 01:34:16 +00:00
Renovate Bot
3f1c60ed23 chore(deps): update docker digests 2021-02-23 03:23:14 +00:00
Renovate Bot
171975b824 chore(deps): update arm32v7/python:3.9-alpine docker digest to 31710c3 2021-02-20 00:06:22 +00:00
Renovate Bot
93589b233f chore(deps): update arm64v8/python:3.9-alpine docker digest to ef2edd3 2021-02-19 22:48:54 +00:00
Renovate Bot
dea78b55b2 chore(deps): update amd64/python:3.9-alpine docker digest to 4f7234d 2021-02-19 21:20:52 +00:00
7494db80fc
ci: optimize build process and dependencies (#21) 2021-02-19 09:48:16 +01:00
cea6803a9d
ci: increase log level for poetry install steps 2021-02-18 11:18:31 +01:00
8b612230cf
[skip ci] disable github strict status check 2021-02-18 11:13:12 +01:00
renovate[bot]
daf8c91d7d
chore(deps): update arm32v7/python:3.9-alpine docker digest to 9710cc5 (#17)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-18 10:45:11 +01:00
renovate[bot]
88cce65862
chore(deps): update arm64v8/python:3.9-alpine docker digest to a6b4680 (#18)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-18 10:44:52 +01:00
renovate[bot]
54649cd494
chore(deps): update amd64/python:3.9-alpine docker digest to 5d02ad3 (#19)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-18 10:44:38 +01:00
d1e2b986c8
fix: add missing build dependencies for cryptography (#20) 2021-02-18 10:03:26 +01:00
Renovate Bot
9a102d0db2 chore(deps): update arm64v8/python:3.9-alpine docker digest to d67bb89 2021-02-04 11:52:24 +00:00
Renovate Bot
718a874ca4 chore(deps): update arm32v7/python:3.9-alpine docker digest to 13b3d3a 2021-02-04 09:21:00 +00:00
Renovate Bot
6e3eb946c6 chore(deps): update amd64/python:3.9-alpine docker digest to 5beb482 2021-02-04 07:54:03 +00:00
Renovate Bot
6871d97dc2 chore(deps): update arm64v8/python:3.9-alpine docker digest to ee35539 2021-02-02 03:38:16 +00:00
Renovate Bot
117371269e chore(deps): update amd64/python:3.9-alpine docker digest to a9bcc1e 2021-02-02 01:37:52 +00:00
Renovate Bot
eec9e8e806 chore(deps): update arm32v7/python:3.9-alpine docker digest to f0b596e 2021-02-01 23:17:01 +00:00
Renovate Bot
08e493f3d3 chore(deps): update arm32v7/python:3.9-alpine docker digest to 90a2442 2021-01-26 02:44:26 +00:00
Renovate Bot
42045eebb9 chore(deps): update arm64v8/python:3.9-alpine docker digest to 3ca1998 2021-01-26 01:38:02 +00:00
Renovate Bot
932bb8c39f chore(deps): update amd64/python:3.9-alpine docker digest to cc482de 2021-01-26 00:39:36 +00:00
a9accbe266
switch to custom drone docker plugin 2021-01-17 20:04:05 +01:00
56eb59bfd7
fix ci badge 2021-01-17 15:23:47 +01:00
5104468185
fix ci badge 2021-01-17 15:10:33 +01:00
7233317627
remove unnecessary docker_config secret from drone config 2021-01-16 15:45:38 +01:00
bcda32f928
re-sign drone config 2021-01-16 15:21:39 +01:00
Renovate Bot
35559b988c chore(deps): update dependency flake8-blind-except to ^0.2.0 2021-01-09 12:11:00 +00:00
41be51a8dd
fix comment syntax 2021-01-09 12:28:53 +01:00
73a8d39360
ignore unrelated flake8 B902 2021-01-09 12:25:13 +01:00
2e9505ba8d
[skip ci] exclude .venv folder from isort 2021-01-03 21:43:56 +01:00
44a4f5016d
[skip ci] update year in license file 2021-01-03 21:40:25 +01:00
d14c0b80e2
[skip ci] update changelog 2021-01-03 16:28:01 +01:00
c8047a952d
chore: replace master by main as default branch 2021-01-03 16:15:25 +01:00
renovate[bot]
a706a86936
chore(deps): pin docker digests (#4)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-03 16:03:03 +01:00
b79255554c
fix dockerfile paths in ci 2021-01-03 15:52:52 +01:00
d5dc5277c3
fix multiarch image source 2021-01-03 15:40:22 +01:00
6e7d1f3e49
chore(docker): use standalone dockerfiles for multiarch 2021-01-03 15:37:13 +01:00
c050d36ced
docs: add contributing information 2021-01-03 15:29:09 +01:00
a33357fb7d
chore: use renovate preset config 2021-01-03 15:26:19 +01:00
90ceef1576
Merge pull request #3 from thegeeklab/migrate-poetry
build: migrate to poetry
2021-01-03 15:09:01 +01:00
83140f13a2
fix name 2021-01-03 14:57:31 +01:00
7610f62e99
fix copy paste issues 2021-01-03 14:52:30 +01:00
476cda9f46
build: migrate to poetry 2021-01-03 14:49:48 +01:00
5959735354
add dockerhub auth for ci 2020-11-27 14:13:11 +01:00
da0096d9a8
Merge pull request #2 from thegeeklab/renovate/docker-python-3.x
Update python Docker tag to v3.9
2020-11-12 21:58:16 +01:00
084e031ca1
add python3.9 classifier 2020-11-12 21:15:35 +01:00
a167b2fb61
update pipelines and docker base image to python3.9 2020-11-12 20:58:42 +01:00
Renovate Bot
0614e91136
Update python Docker tag to v3.9 2020-11-12 19:53:18 +00:00
a5421449fd
Merge pull request #1 from thegeeklab/renovate/configure
Configure Renovate
2020-11-12 20:53:04 +01:00
6a78f32fe7
remove pydocstring version lock and disable droneci manager 2020-11-12 20:49:24 +01:00
Renovate Bot
e974171bba
Add renovate.json 2020-11-11 21:36:53 +00:00
9168800be8
fix license badge 2020-09-25 18:40:47 +02:00
065c346e19
[skip ci] prepare release 2020-09-24 20:42:36 +02:00
e32ab89520
update description 2020-09-22 22:42:25 +02:00
0fb94d1cf4
update description 2020-09-22 22:41:00 +02:00
f32a2f6db7
migrate to thegeeklab orga 2020-09-21 21:59:13 +02:00
37 changed files with 957 additions and 1167 deletions

2
.dictionary Normal file
View File

@ -0,0 +1,2 @@
PyPi
docker-autotag

View File

@ -1,330 +0,0 @@
local PythonVersion(pyversion='3.5') = {
name: 'python' + std.strReplace(pyversion, '.', '') + '-pytest',
image: 'python:' + pyversion,
environment: {
PY_COLORS: 1,
},
commands: [
'pip install -r dev-requirements.txt -qq',
'pip install -qq .',
'docker-autotag --help',
'docker-autotag --version',
],
depends_on: [
'clone',
],
};
local PipelineLint = {
kind: 'pipeline',
name: 'lint',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'flake8',
image: 'python:3.8',
environment: {
PY_COLORS: 1,
},
commands: [
'pip install -r dev-requirements.txt -qq',
'pip install -qq .',
'flake8 ./dockerautotag',
],
},
],
trigger: {
ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineTest = {
kind: 'pipeline',
name: 'test',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
PythonVersion(pyversion='3.5'),
PythonVersion(pyversion='3.6'),
PythonVersion(pyversion='3.7'),
PythonVersion(pyversion='3.8'),
],
depends_on: [
'lint',
],
trigger: {
ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineSecurity = {
kind: 'pipeline',
name: 'security',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'bandit',
image: 'python:3.8',
environment: {
PY_COLORS: 1,
},
commands: [
'pip install -r dev-requirements.txt -qq',
'pip install -qq .',
'bandit -r ./dockerautotag -x ./dockerautotag/tests',
],
},
],
depends_on: [
'test',
],
trigger: {
ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineBuildPackage = {
kind: 'pipeline',
name: 'build-package',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
name: 'build',
image: 'python:3.8',
commands: [
'python setup.py sdist bdist_wheel',
],
},
{
name: 'checksum',
image: 'alpine',
commands: [
'cd dist/ && sha256sum * > ../sha256sum.txt',
],
},
{
name: 'publish-github',
image: 'plugins/github-release',
settings: {
overwrite: true,
api_key: { from_secret: 'github_token' },
files: ['dist/*', 'sha256sum.txt'],
title: '${DRONE_TAG}',
note: 'CHANGELOG.md',
},
when: {
ref: ['refs/tags/**'],
},
},
{
name: 'publish-pypi',
image: 'plugins/pypi',
settings: {
username: { from_secret: 'pypi_username' },
password: { from_secret: 'pypi_password' },
repository: 'https://upload.pypi.org/legacy/',
skip_build: true,
},
when: {
ref: ['refs/tags/**'],
},
},
],
depends_on: [
'security',
],
trigger: {
ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineBuildContainer(arch='amd64') = {
kind: 'pipeline',
name: 'build-container-' + arch,
platform: {
os: 'linux',
arch: arch,
},
steps: [
{
name: 'build',
image: 'python:3.8',
commands: [
'python setup.py bdist_wheel',
],
},
{
name: 'dryrun',
image: 'plugins/docker:18-linux-' + arch,
settings: {
dry_run: true,
dockerfile: 'docker/Dockerfile',
repo: 'xoxys/${DRONE_REPO_NAME}',
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
},
depends_on: ['build'],
when: {
ref: ['refs/pull/**'],
},
},
{
name: 'publish-dockerhub',
image: 'plugins/docker:18-linux-' + arch,
settings: {
auto_tag: true,
auto_tag_suffix: arch,
dockerfile: 'docker/Dockerfile',
repo: 'xoxys/${DRONE_REPO_NAME}',
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
},
when: {
ref: ['refs/heads/master', 'refs/tags/**'],
},
depends_on: ['dryrun'],
},
{
name: 'publish-quay',
image: 'plugins/docker:18-linux-' + arch,
settings: {
auto_tag: true,
auto_tag_suffix: arch,
dockerfile: 'docker/Dockerfile',
registry: 'quay.io',
repo: 'quay.io/thegeeklab/${DRONE_REPO_NAME}',
username: { from_secret: 'quay_username' },
password: { from_secret: 'quay_password' },
},
when: {
ref: ['refs/heads/master', 'refs/tags/**'],
},
depends_on: ['dryrun'],
},
],
depends_on: [
'security',
],
trigger: {
ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'],
},
};
local PipelineNotifications = {
kind: 'pipeline',
name: 'notifications',
platform: {
os: 'linux',
arch: 'amd64',
},
steps: [
{
image: 'plugins/manifest',
name: 'manifest-dockerhub',
settings: {
ignore_missing: true,
auto_tag: true,
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
spec: 'docker/manifest.tmpl',
},
when: {
status: ['success'],
},
},
{
image: 'plugins/manifest',
name: 'manifest-quay',
settings: {
ignore_missing: true,
auto_tag: true,
username: { from_secret: 'quay_username' },
password: { from_secret: 'quay_password' },
spec: 'docker/manifest-quay.tmpl',
},
when: {
status: ['success'],
},
},
{
name: 'pushrm-dockerhub',
pull: 'always',
image: 'chko/docker-pushrm:1',
environment: {
DOCKER_PASS: {
from_secret: 'docker_password',
},
DOCKER_USER: {
from_secret: 'docker_username',
},
PUSHRM_FILE: 'README.md',
PUSHRM_SHORT: 'docker-autotag - Create docker tags from a given version string',
PUSHRM_TARGET: 'xoxys/${DRONE_REPO_NAME}',
},
when: {
status: ['success'],
},
},
{
name: 'pushrm-quay',
pull: 'always',
image: 'chko/docker-pushrm:1',
environment: {
APIKEY__QUAY_IO: {
from_secret: 'quay_token',
},
PUSHRM_FILE: 'README.md',
PUSHRM_TARGET: 'quay.io/thegeeklab/${DRONE_REPO_NAME}',
},
when: {
status: ['success'],
},
},
{
name: 'matrix',
image: 'plugins/matrix',
settings: {
homeserver: { from_secret: 'matrix_homeserver' },
roomid: { from_secret: 'matrix_roomid' },
template: 'Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}',
username: { from_secret: 'matrix_username' },
password: { from_secret: 'matrix_password' },
},
when: {
status: ['success', 'failure'],
},
},
],
depends_on: [
'build-package',
'build-container-amd64',
'build-container-arm64',
'build-container-arm',
],
trigger: {
ref: ['refs/heads/master', 'refs/tags/**'],
status: ['success', 'failure'],
},
};
[
PipelineLint,
PipelineTest,
PipelineSecurity,
PipelineBuildPackage,
PipelineBuildContainer(arch='amd64'),
PipelineBuildContainer(arch='arm64'),
PipelineBuildContainer(arch='arm'),
PipelineNotifications,
]

View File

@ -1,501 +0,0 @@
---
kind: pipeline
name: lint
platform:
os: linux
arch: amd64
steps:
- name: flake8
image: python:3.8
commands:
- pip install -r dev-requirements.txt -qq
- pip install -qq .
- flake8 ./dockerautotag
environment:
PY_COLORS: 1
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
---
kind: pipeline
name: test
platform:
os: linux
arch: amd64
steps:
- name: python35-pytest
image: python:3.5
commands:
- pip install -r dev-requirements.txt -qq
- pip install -qq .
- docker-autotag --help
- docker-autotag --version
environment:
PY_COLORS: 1
depends_on:
- clone
- name: python36-pytest
image: python:3.6
commands:
- pip install -r dev-requirements.txt -qq
- pip install -qq .
- docker-autotag --help
- docker-autotag --version
environment:
PY_COLORS: 1
depends_on:
- clone
- name: python37-pytest
image: python:3.7
commands:
- pip install -r dev-requirements.txt -qq
- pip install -qq .
- docker-autotag --help
- docker-autotag --version
environment:
PY_COLORS: 1
depends_on:
- clone
- name: python38-pytest
image: python:3.8
commands:
- pip install -r dev-requirements.txt -qq
- pip install -qq .
- docker-autotag --help
- docker-autotag --version
environment:
PY_COLORS: 1
depends_on:
- clone
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
depends_on:
- lint
---
kind: pipeline
name: security
platform:
os: linux
arch: amd64
steps:
- name: bandit
image: python:3.8
commands:
- pip install -r dev-requirements.txt -qq
- pip install -qq .
- bandit -r ./dockerautotag -x ./dockerautotag/tests
environment:
PY_COLORS: 1
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
depends_on:
- test
---
kind: pipeline
name: build-package
platform:
os: linux
arch: amd64
steps:
- name: build
image: python:3.8
commands:
- python setup.py sdist bdist_wheel
- name: checksum
image: alpine
commands:
- cd dist/ && sha256sum * > ../sha256sum.txt
- name: publish-github
image: plugins/github-release
settings:
api_key:
from_secret: github_token
files:
- dist/*
- sha256sum.txt
note: CHANGELOG.md
overwrite: true
title: ${DRONE_TAG}
when:
ref:
- refs/tags/**
- name: publish-pypi
image: plugins/pypi
settings:
password:
from_secret: pypi_password
repository: https://upload.pypi.org/legacy/
skip_build: true
username:
from_secret: pypi_username
when:
ref:
- refs/tags/**
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: build-container-amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: python:3.8
commands:
- python setup.py bdist_wheel
- name: dryrun
image: plugins/docker:18-linux-amd64
settings:
dockerfile: docker/Dockerfile
dry_run: true
password:
from_secret: docker_password
repo: xoxys/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
depends_on:
- build
- name: publish-dockerhub
image: plugins/docker:18-linux-amd64
settings:
auto_tag: true
auto_tag_suffix: amd64
dockerfile: docker/Dockerfile
password:
from_secret: docker_password
repo: xoxys/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/heads/master
- refs/tags/**
depends_on:
- dryrun
- name: publish-quay
image: plugins/docker:18-linux-amd64
settings:
auto_tag: true
auto_tag_suffix: amd64
dockerfile: docker/Dockerfile
password:
from_secret: quay_password
registry: quay.io
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: quay_username
when:
ref:
- refs/heads/master
- refs/tags/**
depends_on:
- dryrun
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: build-container-arm64
platform:
os: linux
arch: arm64
steps:
- name: build
image: python:3.8
commands:
- python setup.py bdist_wheel
- name: dryrun
image: plugins/docker:18-linux-arm64
settings:
dockerfile: docker/Dockerfile
dry_run: true
password:
from_secret: docker_password
repo: xoxys/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
depends_on:
- build
- name: publish-dockerhub
image: plugins/docker:18-linux-arm64
settings:
auto_tag: true
auto_tag_suffix: arm64
dockerfile: docker/Dockerfile
password:
from_secret: docker_password
repo: xoxys/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/heads/master
- refs/tags/**
depends_on:
- dryrun
- name: publish-quay
image: plugins/docker:18-linux-arm64
settings:
auto_tag: true
auto_tag_suffix: arm64
dockerfile: docker/Dockerfile
password:
from_secret: quay_password
registry: quay.io
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: quay_username
when:
ref:
- refs/heads/master
- refs/tags/**
depends_on:
- dryrun
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: build-container-arm
platform:
os: linux
arch: arm
steps:
- name: build
image: python:3.8
commands:
- python setup.py bdist_wheel
- name: dryrun
image: plugins/docker:18-linux-arm
settings:
dockerfile: docker/Dockerfile
dry_run: true
password:
from_secret: docker_password
repo: xoxys/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
depends_on:
- build
- name: publish-dockerhub
image: plugins/docker:18-linux-arm
settings:
auto_tag: true
auto_tag_suffix: arm
dockerfile: docker/Dockerfile
password:
from_secret: docker_password
repo: xoxys/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/heads/master
- refs/tags/**
depends_on:
- dryrun
- name: publish-quay
image: plugins/docker:18-linux-arm
settings:
auto_tag: true
auto_tag_suffix: arm
dockerfile: docker/Dockerfile
password:
from_secret: quay_password
registry: quay.io
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: quay_username
when:
ref:
- refs/heads/master
- refs/tags/**
depends_on:
- dryrun
trigger:
ref:
- refs/heads/master
- refs/tags/**
- refs/pull/**
depends_on:
- security
---
kind: pipeline
name: notifications
platform:
os: linux
arch: amd64
steps:
- name: manifest-dockerhub
image: plugins/manifest
settings:
auto_tag: true
ignore_missing: true
password:
from_secret: docker_password
spec: docker/manifest.tmpl
username:
from_secret: docker_username
when:
status:
- success
- name: manifest-quay
image: plugins/manifest
settings:
auto_tag: true
ignore_missing: true
password:
from_secret: quay_password
spec: docker/manifest-quay.tmpl
username:
from_secret: quay_username
when:
status:
- success
- name: pushrm-dockerhub
pull: always
image: chko/docker-pushrm:1
environment:
DOCKER_PASS:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
PUSHRM_FILE: README.md
PUSHRM_SHORT: docker-autotag - Create docker tags from a given version string
PUSHRM_TARGET: xoxys/${DRONE_REPO_NAME}
when:
status:
- success
- name: pushrm-quay
pull: always
image: chko/docker-pushrm:1
environment:
APIKEY__QUAY_IO:
from_secret: quay_token
PUSHRM_FILE: README.md
PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME}
when:
status:
- success
- name: matrix
image: plugins/matrix
settings:
homeserver:
from_secret: matrix_homeserver
password:
from_secret: matrix_password
roomid:
from_secret: matrix_roomid
template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}"
username:
from_secret: matrix_username
when:
status:
- success
- failure
trigger:
ref:
- refs/heads/master
- refs/tags/**
status:
- success
- failure
depends_on:
- build-package
- build-container-amd64
- build-container-arm64
- build-container-arm
---
kind: signature
hmac: 5997a4be30a1f15ebe8dddd9584dbfc496c673497c12ee4b61a437e0076bc00d
...

18
.flake8
View File

@ -1,18 +0,0 @@
[flake8]
ignore = D102, D103, D107, D202, W503
max-line-length = 99
inline-quotes = double
exclude =
.git
.tox
__pycache__
build
dist
tests
*.pyc
*.egg-info
.cache
.eggs
env*
application-import-names = ansiblelater
format = ${cyan}%(path)s:%(row)d:%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s

20
.github/settings.yml vendored
View File

@ -1,16 +1,15 @@
---
repository:
name: docker-autotag
description: Simple tool to create a list of docker tags from a given version string
description: Create docker tags from a given version string
topics: docker, ci, automation, versioning, python
private: false
has_issues: true
has_projects: false
has_wiki: false
has_downloads: false
has_downloads: true
default_branch: master
default_branch: main
allow_squash_merge: true
allow_merge_commit: true
@ -46,12 +45,17 @@ labels:
description: This will not be worked on
branches:
- name: master
- name: main
protection:
required_pull_request_reviews: null
required_status_checks:
strict: true
strict: false
contexts:
- continuous-integration/drone/pr
enforce_admins: null
- ci/woodpecker/pr/lint
- ci/woodpecker/pr/test
- ci/woodpecker/pr/build-package
- ci/woodpecker/pr/build-container
- ci/woodpecker/pr/docs
enforce_admins: false
required_linear_history: true
restrictions: null

4
.gitignore vendored
View File

@ -101,3 +101,7 @@ env*/
.pytest_cache
pip-wheel-metadata
# Misc
CHANGELOG.md
.ruff_cache

47
.gitsv/config.yml Normal file
View File

@ -0,0 +1,47 @@
---
version: "1.1"
versioning:
update-major: []
update-minor: [feat]
update-patch: [fix, perf, refactor, chore, test, ci, docs]
tag:
pattern: "v%d.%d.%d"
release-notes:
sections:
- name: Features
commit-types: [feat]
section-type: commits
- name: Bug Fixes
commit-types: [fix]
section-type: commits
- name: Performance Improvements
commit-types: [perf]
section-type: commits
- name: Code Refactoring
commit-types: [refactor]
section-type: commits
- name: Others
commit-types: [chore]
section-type: commits
- name: Testing
commit-types: [test]
section-type: commits
- name: CI Pipeline
commit-types: [ci]
section-type: commits
- name: Documentation
commit-types: [docs]
section-type: commits
- name: Breaking Changes
section-type: breaking-changes
commit-message:
footer:
issue:
key: issue
add-value-prefix: "#"
issue:
regex: "#?[0-9]+"

1
.lycheeignore Normal file
View File

@ -0,0 +1 @@
https://hub.docker.com/r/thegeeklab/*

6
.markdownlint.yml Normal file
View File

@ -0,0 +1,6 @@
---
default: True
MD013: False
MD041: False
MD004:
style: dash

2
.prettierignore Normal file
View File

@ -0,0 +1,2 @@
*.tpl.md
LICENSE

View File

@ -0,0 +1,73 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: build
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: dryrun
image: quay.io/thegeeklab/wp-docker-buildx:4
settings:
containerfile: Containerfile.multiarch
dry_run: true
platforms:
- linux/amd64
- linux/arm64
provenance: false
repo: ${CI_REPO}
when:
- event: [pull_request]
- name: publish-dockerhub
image: quay.io/thegeeklab/wp-docker-buildx:4
group: container
settings:
auto_tag: true
containerfile: Containerfile.multiarch
password:
from_secret: docker_password
platforms:
- linux/amd64
- linux/arm64
provenance: false
repo: ${CI_REPO}
username:
from_secret: docker_username
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
- name: publish-quay
image: quay.io/thegeeklab/wp-docker-buildx:4
group: container
settings:
auto_tag: true
containerfile: Containerfile.multiarch
password:
from_secret: quay_password
platforms:
- linux/amd64
- linux/arm64
provenance: false
registry: quay.io
repo: quay.io/${CI_REPO}
username:
from_secret: quay_username
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
depends_on:
- lint
- test

View File

@ -0,0 +1,56 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: build
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry build
- name: checksum
image: quay.io/thegeeklab/alpine-tools
commands:
- cd dist/ && sha256sum * > ../sha256sum.txt
- name: changelog
image: quay.io/thegeeklab/git-sv
commands:
- git sv current-version
- git sv release-notes -t ${CI_COMMIT_TAG:-next} -o CHANGELOG.md
- cat CHANGELOG.md
- name: publish-github
image: docker.io/plugins/github-release
settings:
api_key:
from_secret: github_token
files:
- dist/*
- sha256sum.txt
note: CHANGELOG.md
overwrite: true
title: ${CI_COMMIT_TAG}
when:
- event: [tag]
- name: publish-pypi
image: docker.io/library/python:3.12
secrets:
- source: pypi_password
target: POETRY_HTTP_BASIC_PYPI_PASSWORD
- source: pypi_username
target: POETRY_HTTP_BASIC_PYPI_USERNAME
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry publish -n
when:
- event: [tag]
depends_on:
- lint
- test

62
.woodpecker/docs.yml Normal file
View File

@ -0,0 +1,62 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: markdownlint
image: quay.io/thegeeklab/markdownlint-cli
group: test
commands:
- markdownlint 'README.md' 'CONTRIBUTING.md'
- name: spellcheck
image: quay.io/thegeeklab/alpine-tools
group: test
commands:
- spellchecker --files 'docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls
environment:
FORCE_COLOR: "true"
- name: link-validation
image: docker.io/lycheeverse/lychee
group: test
commands:
- lychee --no-progress --format detailed README.md
- name: pushrm-dockerhub
image: docker.io/chko/docker-pushrm:1
secrets:
- source: docker_password
target: DOCKER_PASS
- source: docker_username
target: DOCKER_USER
environment:
PUSHRM_FILE: README.md
PUSHRM_SHORT: Create docker tags from a given version string
PUSHRM_TARGET: ${CI_REPO}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success]
- name: pushrm-quay
image: docker.io/chko/docker-pushrm:1
secrets:
- source: quay_token
target: APIKEY__QUAY_IO
environment:
PUSHRM_FILE: README.md
PUSHRM_TARGET: quay.io/${CI_REPO}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success]
depends_on:
- build-package
- build-container

25
.woodpecker/lint.yml Normal file
View File

@ -0,0 +1,25 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: check-format
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry install
- poetry run ruff format --check --diff ./${CI_REPO_NAME//-/}
environment:
PY_COLORS: "1"
- name: check-coding
image: docker.io/library/python:3.12
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry install
- poetry run ruff check ./${CI_REPO_NAME//-/}
environment:
PY_COLORS: "1"

26
.woodpecker/notify.yml Normal file
View File

@ -0,0 +1,26 @@
---
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
runs_on: [success, failure]
steps:
- name: matrix
image: quay.io/thegeeklab/wp-matrix
settings:
homeserver:
from_secret: matrix_homeserver
password:
from_secret: matrix_password
roomid:
from_secret: matrix_roomid
username:
from_secret: matrix_username
when:
- status: [success, failure]
depends_on:
- docs

38
.woodpecker/test.yml Normal file
View File

@ -0,0 +1,38 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
variables:
- &pytest_base
group: pytest
commands:
- pip install poetry poetry-dynamic-versioning -qq
- poetry install
- poetry version
- poetry run ${CI_REPO_NAME} --help
environment:
PY_COLORS: "1"
steps:
- name: python-312
image: docker.io/library/python:3.12
<<: *pytest_base
- name: python-311
image: docker.io/library/python:3.11
<<: *pytest_base
- name: python-310
image: docker.io/library/python:3.10
<<: *pytest_base
- name: python-39
image: docker.io/library/python:3.9
<<: *pytest_base
- name: python-38
image: docker.io/library/python:3.8
<<: *pytest_base

View File

@ -1,2 +0,0 @@
- INTERNAL
- publish to dockerhub and quay.io

31
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,31 @@
# Contributing
## Security
If you think you have found a **security issue**, please do not mention it in this repository.
Instead, send an email to `security@thegeeklab.de` with as many details as possible so it can be handled confidential.
## Bug Reports and Feature Requests
If you have found a **bug** or have a **feature request** please use the search first in case a similar issue already exists.
If not, please create an issue in this repository
## Code
If you would like to fix a bug or implement a feature, please fork the repository and create a Pull Request.
Before you start any Pull Request, it is recommended that you create an issue to discuss first if you have any
doubts about requirement or implementation. That way you can be sure that the maintainer(s) agree on what to change and how,
and you can hopefully get a quick merge afterwards.
Pull Requests can only be merged once all status checks are green.
## Do not force push to your Pull Request branch
Please do not force push to your Pull Requests branch after you have created your Pull Request, as doing so makes it harder for us to review your work.
Pull Requests will always be squashed by us when we merge your work. Commit as many times as you need in your Pull Request branch.
## Re-requesting a review
Please do not ping your reviewer(s) by mentioning them in a new comment. Instead, use the re-request review functionality.
Read more about this in the [GitHub docs, Re-requesting a review](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request#re-requesting-a-review).

26
Containerfile.multiarch Normal file
View File

@ -0,0 +1,26 @@
FROM python:3.12-alpine@sha256:5365725a6cd59b72a927628fdda9965103e3dc671676c89ef3ed8b8b0e22e812
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.title="docker-autotag"
LABEL org.opencontainers.image.url="https://github.com/thegeeklab/docker-autotag"
LABEL org.opencontainers.image.source="https://github.com/thegeeklab/docker-autotag"
LABEL org.opencontainers.image.documentation="https://github.com/thegeeklab/docker-autotag"
ENV PY_COLORS=1
ENV TZ=UTC
ADD dist/docker_autotag-*.whl /
RUN apk --update add --virtual .build-deps build-base libffi-dev openssl-dev && \
apk --update add git && \
pip install --upgrade --no-cache-dir pip && \
pip install --no-cache-dir $(find / -name "docker_autotag-*.whl") && \
apk del .build-deps && \
rm -f docker_autotag-*.whl && \
rm -rf /var/cache/apk/* && \
rm -rf /root/.cache/
USER root
CMD []
ENTRYPOINT ["/usr/local/bin/docker-autotag"]

20
LICENSE
View File

@ -1,9 +1,21 @@
MIT License
Copyright (c) 2019 Robert Kaussow
Copyright (c) 2022 Robert Kaussow <mail@thegeeklab.de>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,15 +1,16 @@
# docker-autotag
docker-autotag - Create docker tags from a given version string
Create docker tags from a given version string
[![Build Status](https://img.shields.io/drone/build/xoxys/docker-autotag?logo=drone)](https://cloud.drone.io/xoxys/docker-autotag)
[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/xoxys/docker-autotag)
[![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/docker-autotag/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/docker-autotag)
[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/docker-autotag)
[![Quay.io](https://img.shields.io/badge/quay-latest-blue.svg?logo=docker&logoColor=white)](https://quay.io/repository/thegeeklab/docker-autotag)
[![Python Version](https://img.shields.io/pypi/pyversions/docker-autotag.svg)](https://pypi.org/project/docker-autotag/)
[![PyPi Status](https://img.shields.io/pypi/status/docker-autotag.svg)](https://pypi.org/project/docker-autotag/)
[![PyPi Release](https://img.shields.io/pypi/v/docker-autotag.svg)](https://pypi.org/project/docker-autotag/)
[![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/xoxys/docker-autotag)
[![License: MIT](https://img.shields.io/github/license/xoxys/docker-autotag)](LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/docker-autotag)](https://github.com/thegeeklab/docker-autotag/graphs/contributors)
[![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/docker-autotag)
[![License: MIT](https://img.shields.io/github/license/thegeeklab/docker-autotag)](https://github.com/thegeeklab/docker-autotag/blob/main/LICENSE)
Simple tool to create a list of docker tags from a given version string.
@ -20,6 +21,8 @@ Simple tool to create a list of docker tags from a given version string.
DOCKER_AUTOTAG_OUTPUT_FILE=
# adds a given suffix to every determined tag
DOCKER_AUTOTAG_SUFFIX=
# returns only tags with the applied suffix
DOCKER_AUTOTAG_SUFFIX_STRICT=False
# version string to use; returns 'latest' if nothing is specified
DOCKER_AUTOTAG_VERSION=
# comma-seprated list of static tags to add to the result set
@ -58,14 +61,18 @@ DOCKER_AUTOTAG_IGNORE_PRERELEASE=True DOCKER_AUTOTAG_VERSION=1.0.0-beta docker-a
DOCKER_AUTOTAG_SUFFIX=amd64 DOCKER_AUTOTAG_VERSION=1.0.0 docker-autotag
# 1.0.0,1.0,1,1.0.0-amd64,1.0-amd64,1-amd64
DOCKER_AUTOTAG_SUFFIX=amd64 DOCKER_AUTOTAG_SUFFIX_STRICT=True DOCKER_AUTOTAG_VERSION=1.0.0 docker-autotag
# 1.0.0-amd64,1.0-amd64,1-amd64
DOCKER_AUTOTAG_EXTRA_TAGS=extra1,extra2 DOCKER_AUTOTAG_VERSION=1.0.0 docker-autotag
# 1.0.0,1.0,1,extra1,extra2
```
## Contributors
Special thanks to all [contributors](https://github.com/thegeeklab/docker-autotag/graphs/contributors). If you would like to contribute,
please see the [instructions](https://github.com/thegeeklab/docker-autotag/blob/main/CONTRIBUTING.md).
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Maintainers and Contributors
[Robert Kaussow](https://github.com/xoxys)
This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/docker-autotag/blob/main/LICENSE) file for details.

View File

@ -1,7 +0,0 @@
#!/usr/bin/env python3
import sys
import dockerautotag.__main__
sys.exit(dockerautotag.__main__.main())

View File

@ -1,19 +0,0 @@
pydocstyle<4.0.0
flake8
flake8-colors
flake8-blind-except
flake8-builtins
flake8-docstrings<=3.0.0
flake8-isort
flake8-logging-format
flake8-polyfill
flake8-quotes
flake8-pep3101
flake8-eradicate; python_version >= "3.6"
pep8-naming
wheel
pytest
pytest-mock
pytest-cov
bandit
yapf

View File

@ -1,24 +0,0 @@
FROM python:3.7-alpine
LABEL maintainer="Robert Kaussow <mail@geeklabor.de>" \
org.label-schema.name="docker-autotag" \
org.label-schema.vcs-url="https://github.com/xoxys/docker-autotag" \
org.label-schema.vendor="Robert Kaussow" \
org.label-schema.schema-version="1.0"
ENV PY_COLORS=1
ADD dist/docker_autotag-*.whl /
RUN apk --update add --virtual .build-deps build-base libffi-dev libressl-dev && \
apk --update add git && \
pip install --upgrade --no-cache-dir pip && \
pip install --no-cache-dir docker_autotag-*.whl && \
apk del .build-deps && \
rm -f docker_autotag-*.whl && \
rm -rf /var/cache/apk/* && \
rm -rf /root/.cache/
USER root
CMD []
ENTRYPOINT ["/usr/local/bin/docker-autotag"]

View File

@ -1,24 +0,0 @@
image: quay.io/thegeeklab/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
{{/if}}
manifests:
- image: quay.io/thegeeklab/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}amd64
platform:
architecture: amd64
os: linux
- image: quay.io/thegeeklab/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm64
platform:
architecture: arm64
os: linux
variant: v8
- image: quay.io/thegeeklab/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm
platform:
architecture: arm
os: linux
variant: v7

View File

@ -1,24 +0,0 @@
image: xoxys/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
{{/if}}
manifests:
- image: xoxys/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}amd64
platform:
architecture: amd64
os: linux
- image: xoxys/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm64
platform:
architecture: arm64
os: linux
variant: v8
- image: xoxys/docker-autotag:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}arm
platform:
architecture: arm
os: linux
variant: v7

View File

@ -1,35 +0,0 @@
"""Global utility methods and classes."""
import os
from distutils.util import strtobool
def normalize_path(path):
if path:
return os.path.abspath(os.path.expanduser(os.path.expandvars(path)))
def to_bool(string):
return bool(strtobool(str(string)))
def trim_prefix(text, prefix):
if text.startswith(prefix):
return text[len(prefix):]
return text
def to_prerelease(tup):
res = "".join(tup)
return res
class Singleton(type):
"""Meta singleton class."""
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]

View File

@ -1,9 +1,3 @@
"""Default package."""
__author__ = "Robert Kaussow"
__project__ = "docker-autotag"
__version__ = "0.1.2"
__license__ = "MIT"
__maintainer__ = "Robert Kaussow"
__email__ = "mail@geeklabor.de"
__url__ = "https://github.com/xoxys/docker-autotag"
__version__ = "0.0.0"

View File

@ -1,12 +0,0 @@
#!/usr/bin/env python3
"""Main program."""
from dockerautotag.Cli import Autotag
def main():
Autotag()
if __name__ == "__main__":
main()

View File

@ -3,16 +3,14 @@
import argparse
import copy
import os
import sys
from collections import defaultdict
import semantic_version
from dockerautotag import __version__
from dockerautotag.Logging import SingleLog
from dockerautotag.Utils import normalize_path
from dockerautotag.Utils import to_bool
from dockerautotag.Utils import to_prerelease
from dockerautotag.Utils import trim_prefix
from dockerautotag.logging import SingleLog
from dockerautotag.utils import normalize_path, to_bool, to_prerelease, trim_prefix
class Autotag:
@ -29,9 +27,7 @@ class Autotag:
parser = argparse.ArgumentParser(
description=("Creates a list of docker tags from a given version string.")
)
parser.add_argument(
"--version", action="version", version="%(prog)s {}".format(__version__)
)
parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
return parser.parse_args()
@ -42,6 +38,7 @@ class Autotag:
config["file"] = normalize_path(output_raw)
config["suffix"] = os.environ.get("DOCKER_AUTOTAG_SUFFIX", None)
config["suffix_strict"] = to_bool(os.environ.get("DOCKER_AUTOTAG_SUFFIX_STRICT", False))
config["version"] = os.environ.get("DOCKER_AUTOTAG_VERSION", None)
config["extra"] = os.environ.get("DOCKER_AUTOTAG_EXTRA_TAGS", None)
config["force_latest"] = to_bool(os.environ.get("DOCKER_AUTOTAG_FORCE_LATEST", False))
@ -58,16 +55,19 @@ class Autotag:
return tags + e
@staticmethod
def _tag_suffix(tags, suffix):
def _tag_suffix(tags, suffix, suffix_strict):
if not suffix:
return tags
res = copy.deepcopy(tags)
res = []
if not suffix_strict:
res = copy.deepcopy(tags)
for t in tags:
if t == "latest":
res.append(suffix)
else:
res.append("{}-{}".format(t, suffix))
res.append(f"{t}-{suffix}")
return res
@ -90,25 +90,23 @@ class Autotag:
except ValueError:
try:
version = semantic_version.Version.coerce(ref)
except Exception:
except Exception: # noqa: BLE001
return default
except Exception:
except Exception: # noqa: BLE001
return default
if version.prerelease:
tags.append(
"{}.{}.{}-{}".format(
version.major, version.minor, version.patch, to_prerelease(version.prerelease)
)
f"{version.major}.{version.minor}.{version.patch}-{to_prerelease(version.prerelease)}"
)
if not ignore_pre:
return tags
tags.append("{}.{}".format(version.major, version.minor))
tags.append("{}.{}.{}".format(version.major, version.minor, version.patch))
tags.append(f"{version.major}.{version.minor}")
tags.append(f"{version.major}.{version.minor}.{version.patch}")
if version.major > 0:
tags.append("{}".format(version.major))
tags.append(f"{version.major}")
return tags
@ -116,14 +114,19 @@ class Autotag:
config = self.config
v = self._default_tags(config["version"], config["ignore_pre"], config["force_latest"])
v = self._tag_suffix(v, config["suffix"])
v = self._tag_suffix(v, config["suffix"], config["suffix_strict"])
v = self._tag_extra(v, config["extra"])
if config["file"]:
try:
try:
if config["file"]:
with open(config["file"], "w") as f:
f.write(",".join(v))
except IOError as e:
self.logger.error("Unable to write file: {}".format(str(e)))
else:
sys.stdout.write(",".join(v))
sys.stdout.write("\n")
except OSError as e:
self.logger.error(f"Unable to write file: {e!s}")
print(",".join(v))
def main():
Autotag()

View File

@ -7,11 +7,10 @@ import sys
import colorama
from pythonjsonlogger import jsonlogger
from dockerautotag.Utils import Singleton
from dockerautotag.Utils import to_bool
from dockerautotag.utils import Singleton, to_bool
CONSOLE_FORMAT = "{}[%(levelname)s]{} %(message)s"
JSON_FORMAT = "(asctime) (levelname) (message)"
JSON_FORMAT = "%(asctime)s %(levelname)s %(message)s"
def _should_do_markup():
@ -25,7 +24,7 @@ def _should_do_markup():
colorama.init(autoreset=True, strip=not _should_do_markup())
class LogFilter(object):
class LogFilter:
"""A custom log filter which excludes log messages above the logged level."""
def __init__(self, level):
@ -46,15 +45,15 @@ class LogFilter(object):
class MultilineFormatter(logging.Formatter):
"""Logging Formatter to reset color after newline characters."""
def format(self, record): # noqa
record.msg = record.msg.replace("\n", "\n{}... ".format(colorama.Style.RESET_ALL))
def format(self, record):
record.msg = record.msg.replace("\n", f"\n{colorama.Style.RESET_ALL}... ")
return logging.Formatter.format(self, record)
class MultilineJsonFormatter(jsonlogger.JsonFormatter):
"""Logging Formatter to remove newline characters."""
def format(self, record): # noqa
def format(self, record):
record.msg = record.msg.replace("\n", " ")
return jsonlogger.JsonFormatter.format(self, record)
@ -62,11 +61,11 @@ class MultilineJsonFormatter(jsonlogger.JsonFormatter):
class Log:
"""Base logging object."""
def __init__(self, level=logging.WARN, name="ansibledoctor", json=False):
def __init__(self, level=logging.WARNING, name="ansibledoctor", json=False):
self.logger = logging.getLogger(name)
self.logger.setLevel(level)
self.logger.addHandler(self._get_error_handler(json=json))
self.logger.addHandler(self._get_warn_handler(json=json))
self.logger.addHandler(self._get_warning_handler(json=json))
self.logger.addHandler(self._get_info_handler(json=json))
self.logger.addHandler(self._get_critical_handler(json=json))
self.logger.addHandler(self._get_debug_handler(json=json))
@ -87,13 +86,13 @@ class Log:
return handler
def _get_warn_handler(self, json=False):
def _get_warning_handler(self, json=False):
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.WARN)
handler.addFilter(LogFilter(logging.WARN))
handler.setLevel(logging.WARNING)
handler.addFilter(LogFilter(logging.WARNING))
handler.setFormatter(
MultilineFormatter(
self.warn(CONSOLE_FORMAT.format(colorama.Fore.YELLOW, colorama.Style.RESET_ALL))
self.warning(CONSOLE_FORMAT.format(colorama.Fore.YELLOW, colorama.Style.RESET_ALL))
)
)
@ -162,8 +161,8 @@ class Log:
"""Format error messages and return string."""
return msg
def warn(self, msg):
"""Format warn messages and return string."""
def warning(self, msg):
"""Format warning messages and return string."""
return msg
def info(self, msg):
@ -179,7 +178,7 @@ class Log:
:returns: string
"""
return "{}{}{}".format(color, msg, colorama.Style.RESET_ALL)
return f"{color}{msg}{colorama.Style.RESET_ALL}"
def sysexit(self, code=1):
sys.exit(code)

59
dockerautotag/utils.py Normal file
View File

@ -0,0 +1,59 @@
"""Global utility methods and classes."""
import os
def normalize_path(path):
if path:
return os.path.abspath(os.path.expanduser(os.path.expandvars(path)))
return None
def strtobool(value):
"""Convert a string representation of truth to true or false."""
_map = {
"y": True,
"yes": True,
"t": True,
"true": True,
"on": True,
"1": True,
"n": False,
"no": False,
"f": False,
"false": False,
"off": False,
"0": False,
}
try:
return _map[str(value).lower()]
except KeyError as err:
raise ValueError(f'"{value}" is not a valid bool value') from err
def to_bool(string):
return bool(strtobool(str(string)))
def trim_prefix(text, prefix):
if text.startswith(prefix):
return text[len(prefix) :]
return text
def to_prerelease(tup):
return ".".join(tup)
class Singleton(type):
"""Meta singleton class."""
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]

266
poetry.lock generated Normal file
View File

@ -0,0 +1,266 @@
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
[[package]]
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
[[package]]
name = "coverage"
version = "7.5.2"
description = "Code coverage measurement for Python"
optional = false
python-versions = ">=3.8"
files = [
{file = "coverage-7.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:554c7327bf0fd688050348e22db7c8e163fb7219f3ecdd4732d7ed606b417263"},
{file = "coverage-7.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d0305e02e40c7cfea5d08d6368576537a74c0eea62b77633179748d3519d6705"},
{file = "coverage-7.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:829fb55ad437d757c70d5b1c51cfda9377f31506a0a3f3ac282bc6a387d6a5f1"},
{file = "coverage-7.5.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:894b1acded706f1407a662d08e026bfd0ff1e59e9bd32062fea9d862564cfb65"},
{file = "coverage-7.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe76d6dee5e4febefa83998b17926df3a04e5089e3d2b1688c74a9157798d7a2"},
{file = "coverage-7.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c7ebf2a37e4f5fea3c1a11e1f47cea7d75d0f2d8ef69635ddbd5c927083211fc"},
{file = "coverage-7.5.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20e611fc36e1a0fc7bbf957ef9c635c8807d71fbe5643e51b2769b3cc0fb0b51"},
{file = "coverage-7.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7c5c5b7ae2763533152880d5b5b451acbc1089ade2336b710a24b2b0f5239d20"},
{file = "coverage-7.5.2-cp310-cp310-win32.whl", hash = "sha256:1e4225990a87df898e40ca31c9e830c15c2c53b1d33df592bc8ef314d71f0281"},
{file = "coverage-7.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:976cd92d9420e6e2aa6ce6a9d61f2b490e07cb468968adf371546b33b829284b"},
{file = "coverage-7.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5997d418c219dcd4dcba64e50671cca849aaf0dac3d7a2eeeb7d651a5bd735b8"},
{file = "coverage-7.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ec27e93bbf5976f0465e8936f02eb5add99bbe4e4e7b233607e4d7622912d68d"},
{file = "coverage-7.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f11f98753800eb1ec872562a398081f6695f91cd01ce39819e36621003ec52a"},
{file = "coverage-7.5.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e34680049eecb30b6498784c9637c1c74277dcb1db75649a152f8004fbd6646"},
{file = "coverage-7.5.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e12536446ad4527ac8ed91d8a607813085683bcce27af69e3b31cd72b3c5960"},
{file = "coverage-7.5.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3d3f7744b8a8079d69af69d512e5abed4fb473057625588ce126088e50d05493"},
{file = "coverage-7.5.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:431a3917e32223fcdb90b79fe60185864a9109631ebc05f6c5aa03781a00b513"},
{file = "coverage-7.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a7c6574225f34ce45466f04751d957b5c5e6b69fca9351db017c9249786172ce"},
{file = "coverage-7.5.2-cp311-cp311-win32.whl", hash = "sha256:2b144d142ec9987276aeff1326edbc0df8ba4afbd7232f0ca10ad57a115e95b6"},
{file = "coverage-7.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:900532713115ac58bc3491b9d2b52704a05ed408ba0918d57fd72c94bc47fba1"},
{file = "coverage-7.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9a42970ce74c88bdf144df11c52c5cf4ad610d860de87c0883385a1c9d9fa4ab"},
{file = "coverage-7.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26716a1118c6ce2188283b4b60a898c3be29b480acbd0a91446ced4fe4e780d8"},
{file = "coverage-7.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60b66b0363c5a2a79fba3d1cd7430c25bbd92c923d031cae906bdcb6e054d9a2"},
{file = "coverage-7.5.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d22eba19273b2069e4efeff88c897a26bdc64633cbe0357a198f92dca94268"},
{file = "coverage-7.5.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3bb5b92a0ab3d22dfdbfe845e2fef92717b067bdf41a5b68c7e3e857c0cff1a4"},
{file = "coverage-7.5.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1aef719b6559b521ae913ddeb38f5048c6d1a3d366865e8b320270b7bc4693c2"},
{file = "coverage-7.5.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8809c0ea0e8454f756e3bd5c36d04dddf222989216788a25bfd6724bfcee342c"},
{file = "coverage-7.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1acc2e2ef098a1d4bf535758085f508097316d738101a97c3f996bccba963ea5"},
{file = "coverage-7.5.2-cp312-cp312-win32.whl", hash = "sha256:97de509043d3f0f2b2cd171bdccf408f175c7f7a99d36d566b1ae4dd84107985"},
{file = "coverage-7.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:8941e35a0e991a7a20a1fa3e3182f82abe357211f2c335a9e6007067c3392fcf"},
{file = "coverage-7.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5662bf0f6fb6757f5c2d6279c541a5af55a39772c2362ed0920b27e3ce0e21f7"},
{file = "coverage-7.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d9c62cff2ffb4c2a95328488fd7aa96a7a4b34873150650fe76b19c08c9c792"},
{file = "coverage-7.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74eeaa13e8200ad72fca9c5f37395fb310915cec6f1682b21375e84fd9770e84"},
{file = "coverage-7.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f29bf497d51a5077994b265e976d78b09d9d0dff6ca5763dbb4804534a5d380"},
{file = "coverage-7.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f96aa94739593ae0707eda9813ce363a0a0374a810ae0eced383340fc4a1f73"},
{file = "coverage-7.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:51b6cee539168a912b4b3b040e4042b9e2c9a7ad9c8546c09e4eaeff3eacba6b"},
{file = "coverage-7.5.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:59a75e6aa5c25b50b5a1499f9718f2edff54257f545718c4fb100f48d570ead4"},
{file = "coverage-7.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29da75ce20cb0a26d60e22658dd3230713c6c05a3465dd8ad040ffc991aea318"},
{file = "coverage-7.5.2-cp38-cp38-win32.whl", hash = "sha256:23f2f16958b16152b43a39a5ecf4705757ddd284b3b17a77da3a62aef9c057ef"},
{file = "coverage-7.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:9e41c94035e5cdb362beed681b58a707e8dc29ea446ea1713d92afeded9d1ddd"},
{file = "coverage-7.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:06d96b9b19bbe7f049c2be3c4f9e06737ec6d8ef8933c7c3a4c557ef07936e46"},
{file = "coverage-7.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:878243e1206828908a6b4a9ca7b1aa8bee9eb129bf7186fc381d2646f4524ce9"},
{file = "coverage-7.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:482df956b055d3009d10fce81af6ffab28215d7ed6ad4a15e5c8e67cb7c5251c"},
{file = "coverage-7.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a35c97af60a5492e9e89f8b7153fe24eadfd61cb3a2fb600df1a25b5dab34b7e"},
{file = "coverage-7.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24bb4c7859a3f757a116521d4d3a8a82befad56ea1bdacd17d6aafd113b0071e"},
{file = "coverage-7.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1046aab24c48c694f0793f669ac49ea68acde6a0798ac5388abe0a5615b5ec8"},
{file = "coverage-7.5.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:448ec61ea9ea7916d5579939362509145caaecf03161f6f13e366aebb692a631"},
{file = "coverage-7.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4a00bd5ba8f1a4114720bef283cf31583d6cb1c510ce890a6da6c4268f0070b7"},
{file = "coverage-7.5.2-cp39-cp39-win32.whl", hash = "sha256:9f805481d5eff2a96bac4da1570ef662bf970f9a16580dc2c169c8c3183fa02b"},
{file = "coverage-7.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:2c79f058e7bec26b5295d53b8c39ecb623448c74ccc8378631f5cb5c16a7e02c"},
{file = "coverage-7.5.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:40dbb8e7727560fe8ab65efcddfec1ae25f30ef02e2f2e5d78cfb52a66781ec5"},
{file = "coverage-7.5.2.tar.gz", hash = "sha256:13017a63b0e499c59b5ba94a8542fb62864ba3016127d1e4ef30d354fc2b00e9"},
]
[package.dependencies]
tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""}
[package.extras]
toml = ["tomli"]
[[package]]
name = "exceptiongroup"
version = "1.2.1"
description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
files = [
{file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"},
{file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"},
]
[package.extras]
test = ["pytest (>=6)"]
[[package]]
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.7"
files = [
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
[[package]]
name = "packaging"
version = "24.0"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.7"
files = [
{file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"},
{file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"},
]
[[package]]
name = "pluggy"
version = "1.5.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.8"
files = [
{file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
{file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
]
[package.extras]
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "pytest"
version = "8.2.1"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.8"
files = [
{file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"},
{file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"},
]
[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=1.5,<2.0"
tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras]
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
name = "pytest-cov"
version = "5.0.0"
description = "Pytest plugin for measuring coverage."
optional = false
python-versions = ">=3.8"
files = [
{file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"},
{file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"},
]
[package.dependencies]
coverage = {version = ">=5.2.1", extras = ["toml"]}
pytest = ">=4.6"
[package.extras]
testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"]
[[package]]
name = "pytest-mock"
version = "3.14.0"
description = "Thin-wrapper around the mock package for easier use with pytest"
optional = false
python-versions = ">=3.8"
files = [
{file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"},
{file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"},
]
[package.dependencies]
pytest = ">=6.2.5"
[package.extras]
dev = ["pre-commit", "pytest-asyncio", "tox"]
[[package]]
name = "python-json-logger"
version = "2.0.7"
description = "A python library adding a json log formatter"
optional = false
python-versions = ">=3.6"
files = [
{file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
{file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
]
[[package]]
name = "ruff"
version = "0.4.5"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
files = [
{file = "ruff-0.4.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8f58e615dec58b1a6b291769b559e12fdffb53cc4187160a2fc83250eaf54e96"},
{file = "ruff-0.4.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:84dd157474e16e3a82745d2afa1016c17d27cb5d52b12e3d45d418bcc6d49264"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f483ad9d50b00e7fd577f6d0305aa18494c6af139bce7319c68a17180087f4"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63fde3bf6f3ad4e990357af1d30e8ba2730860a954ea9282c95fc0846f5f64af"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78e3ba4620dee27f76bbcad97067766026c918ba0f2d035c2fc25cbdd04d9c97"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:441dab55c568e38d02bbda68a926a3d0b54f5510095c9de7f95e47a39e0168aa"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1169e47e9c4136c997f08f9857ae889d614c5035d87d38fda9b44b4338909cdf"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:755ac9ac2598a941512fc36a9070a13c88d72ff874a9781493eb237ab02d75df"},
{file = "ruff-0.4.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4b02a65985be2b34b170025a8b92449088ce61e33e69956ce4d316c0fe7cce0"},
{file = "ruff-0.4.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:75a426506a183d9201e7e5664de3f6b414ad3850d7625764106f7b6d0486f0a1"},
{file = "ruff-0.4.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6e1b139b45e2911419044237d90b60e472f57285950e1492c757dfc88259bb06"},
{file = "ruff-0.4.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a6f29a8221d2e3d85ff0c7b4371c0e37b39c87732c969b4d90f3dad2e721c5b1"},
{file = "ruff-0.4.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d6ef817124d72b54cc923f3444828ba24fa45c3164bc9e8f1813db2f3d3a8a11"},
{file = "ruff-0.4.5-py3-none-win32.whl", hash = "sha256:aed8166c18b1a169a5d3ec28a49b43340949e400665555b51ee06f22813ef062"},
{file = "ruff-0.4.5-py3-none-win_amd64.whl", hash = "sha256:b0b03c619d2b4350b4a27e34fd2ac64d0dabe1afbf43de57d0f9d8a05ecffa45"},
{file = "ruff-0.4.5-py3-none-win_arm64.whl", hash = "sha256:9d15de3425f53161b3f5a5658d4522e4eee5ea002bf2ac7aa380743dd9ad5fba"},
{file = "ruff-0.4.5.tar.gz", hash = "sha256:286eabd47e7d4d521d199cab84deca135557e6d1e0f0d01c29e757c3cb151b54"},
]
[[package]]
name = "semantic-version"
version = "2.10.0"
description = "A library implementing the 'SemVer' scheme."
optional = false
python-versions = ">=2.7"
files = [
{file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"},
{file = "semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"},
]
[package.extras]
dev = ["Django (>=1.11)", "check-manifest", "colorama (<=0.4.1)", "coverage", "flake8", "nose2", "readme-renderer (<25.0)", "tox", "wheel", "zest.releaser[recommended]"]
doc = ["Sphinx", "sphinx-rtd-theme"]
[[package]]
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.7"
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
[metadata]
lock-version = "2.0"
python-versions = "^3.8.0"
content-hash = "109101f651c081657687f0847bda09033c4944802ad22eab66e750d1b2c02cc0"

132
pyproject.toml Normal file
View File

@ -0,0 +1,132 @@
[tool.poetry]
authors = ["Robert Kaussow <mail@thegeeklab.de>"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"Natural Language :: English",
"Operating System :: POSIX",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Utilities",
"Topic :: Software Development",
]
description = "Creates a list of docker tags from a given version string."
documentation = "https://github.com/thegeeklab/docker-autotag/"
homepage = "https://github.com/thegeeklab/docker-autotag/"
include = ["LICENSE"]
keywords = ["docker", "versioning", "automation", "ci"]
license = "MIT"
name = "docker-autotag"
packages = [{ include = "dockerautotag" }]
readme = "README.md"
repository = "https://github.com/thegeeklab/docker-autotag/"
version = "0.0.0"
[tool.poetry.dependencies]
colorama = "0.4.6"
python = "^3.8.0"
python-json-logger = "2.0.7"
semantic-version = "2.10.0"
[tool.poetry.scripts]
docker-autotag = "dockerautotag.cli:main"
[tool.poetry.group.dev.dependencies]
ruff = "0.4.5"
pytest = "8.2.1"
pytest-mock = "3.14.0"
pytest-cov = "5.0.0"
toml = "0.10.2"
[tool.poetry-dynamic-versioning]
enable = true
style = "semver"
vcs = "git"
[tool.pytest.ini_options]
addopts = "dockerautotag --cov=dockerautotag --cov-report=xml:coverage.xml --cov-report=term --no-cov-on-fail"
filterwarnings = [
"ignore::FutureWarning",
"ignore::DeprecationWarning",
"ignore:.*pep8.*:FutureWarning",
]
[tool.coverage.run]
omit = ["**/test/*"]
[build-system]
build-backend = "poetry_dynamic_versioning.backend"
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"]
[tool.ruff]
exclude = [
".git",
"__pycache__",
"build",
"dist",
"test",
"*.pyc",
"*.egg-info",
".cache",
".eggs",
"env*",
]
line-length = 99
indent-width = 4
[tool.ruff.lint]
# Explanation of errors
#
# D102: Missing docstring in public method
# D103: Missing docstring in public function
# D105: Missing docstring in magic method
# D107: Missing docstring in __init__
# D202: No blank lines allowed after function docstring
# D203: One blank line required before class docstring
# D212: Multi-line docstring summary should start at the first line
ignore = [
"D102",
"D103",
"D105",
"D107",
"D202",
"D203",
"D212",
"UP038",
"RUF012",
]
select = [
"D",
"E",
"F",
"Q",
"W",
"I",
"S",
"BLE",
"N",
"UP",
"B",
"A",
"C4",
"T20",
"SIM",
"RET",
"ARG",
"ERA",
"RUF",
]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
line-ending = "lf"

12
renovate.json Normal file
View File

@ -0,0 +1,12 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>thegeeklab/renovate-presets"],
"packageRules": [
{
"matchManagers": ["woodpecker"],
"matchFileNames": [".woodpecker/test.yml"],
"matchPackageNames": ["docker.io/library/python"],
"enabled": false
}
]
}

View File

@ -1,30 +0,0 @@
[metadata]
description-file = README.md
license_file = LICENSE
[bdist_wheel]
universal = 1
[isort]
default_section = THIRDPARTY
known_first_party = dockerautotag
sections = FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
force_single_line = true
line_length = 99
skip_glob = **/.env*,**/env/*,**/docs/*
[yapf]
based_on_style = google
column_limit = 99
dedent_closing_brackets = true
coalesce_brackets = true
split_before_logical_operator = true
[tool:pytest]
filterwarnings =
ignore::FutureWarning
ignore:.*collections.*:DeprecationWarning
ignore:.*pep8.*:FutureWarning
[coverage:run]
omit = **/test/*

View File

@ -1,71 +0,0 @@
#!/usr/bin/env python3
"""Setup script for the package."""
import io
import os
import re
from setuptools import find_packages
from setuptools import setup
PACKAGE_NAME = "dockerautotag"
def get_property(prop, project):
current_dir = os.path.dirname(os.path.realpath(__file__))
result = re.search(
r'{}\s*=\s*[\'"]([^\'"]*)[\'"]'.format(prop),
open(os.path.join(current_dir, project, "__init__.py")).read())
return result.group(1)
def get_readme(filename="README.md"):
this = os.path.abspath(os.path.dirname(__file__))
with io.open(os.path.join(this, filename), encoding="utf-8") as f:
long_description = f.read()
return long_description
setup(
name=get_property("__project__", PACKAGE_NAME),
version=get_property("__version__", PACKAGE_NAME),
description="Creates a list of docker tags from a given version string.",
keywords="docker, versioning, automation, ci",
author=get_property("__author__", PACKAGE_NAME),
author_email=get_property("__email__", PACKAGE_NAME),
url=get_property("__url__", PACKAGE_NAME),
license=get_property("__license__", PACKAGE_NAME),
long_description=get_readme(),
long_description_content_type="text/markdown",
packages=find_packages(exclude=["*.test", "test", "test.*"]),
include_package_data=True,
zip_safe=False,
python_requires=">=3.5,<4",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"Natural Language :: English",
"Operating System :: POSIX",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Topic :: Utilities",
"Topic :: Software Development",
],
install_requires=[
"semantic-version",
"colorama",
"python-json-logger",
],
entry_points={
"console_scripts": [
"docker-autotag = dockerautotag.__main__:main"
]
},
)