winipedia-utils 0.4.43__py3-none-any.whl → 0.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of winipedia-utils might be problematic. Click here for more details.
- winipedia_utils/artifacts/build.py +27 -0
- winipedia_utils/dev/artifacts/build.py +62 -0
- winipedia_utils/{text → dev/configs/base}/config.py +16 -11
- winipedia_utils/{git/gitignore/config.py → dev/configs/gitignore.py} +2 -2
- winipedia_utils/{git/pre_commit/config.py → dev/configs/pre_commit.py} +6 -6
- winipedia_utils/{projects/poetry/config.py → dev/configs/pyproject.py} +120 -32
- winipedia_utils/{testing/config.py → dev/configs/testing.py} +7 -4
- winipedia_utils/dev/configs/workflows/base/base.py +907 -0
- winipedia_utils/dev/configs/workflows/health_check.py +69 -0
- winipedia_utils/dev/configs/workflows/publish.py +51 -0
- winipedia_utils/dev/configs/workflows/release.py +91 -0
- winipedia_utils/dev/git/github/repo/__init__.py +1 -0
- winipedia_utils/{git → dev/git}/github/repo/protect.py +5 -5
- winipedia_utils/dev/git/pre_commit/hooks.py +85 -0
- winipedia_utils/{git → dev/git}/pre_commit/run_hooks.py +23 -13
- winipedia_utils/dev/projects/poetry/dev_deps.py +21 -0
- winipedia_utils/dev/projects/poetry/poetry.py +248 -0
- winipedia_utils/{projects → dev/projects}/project.py +6 -7
- winipedia_utils/dev/testing/__init__.py +1 -0
- winipedia_utils/{testing → dev/testing}/convention.py +1 -1
- winipedia_utils/{testing → dev/testing}/create_tests.py +14 -14
- winipedia_utils/dev/testing/tests/__init__.py +1 -0
- winipedia_utils/dev/testing/tests/base/__init__.py +1 -0
- winipedia_utils/dev/testing/tests/base/fixtures/__init__.py +1 -0
- winipedia_utils/{testing → dev/testing}/tests/base/fixtures/fixture.py +1 -1
- winipedia_utils/dev/testing/tests/base/fixtures/scopes/__init__.py +1 -0
- winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/class_.py +2 -2
- winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/module.py +2 -2
- winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/session.py +10 -10
- winipedia_utils/dev/testing/tests/base/utils/__init__.py +1 -0
- winipedia_utils/dev/testing/tests/base/utils/utils.py +1 -0
- winipedia_utils/{testing → dev/testing}/tests/conftest.py +2 -2
- winipedia_utils/{testing/tests/base/utils → dev/testing}/utils.py +7 -24
- winipedia_utils/setup.py +9 -5
- winipedia_utils/utils/__init__.py +1 -0
- winipedia_utils/utils/data/dataframe/__init__.py +1 -0
- winipedia_utils/{data → utils/data}/dataframe/cleaning.py +1 -1
- winipedia_utils/utils/data/structures/__init__.py +1 -0
- winipedia_utils/{text → utils/data/structures/text}/string.py +36 -3
- winipedia_utils/utils/git/__init__.py +1 -0
- winipedia_utils/utils/git/github/__init__.py +1 -0
- winipedia_utils/{git → utils/git}/github/github.py +1 -1
- winipedia_utils/utils/git/github/repo/__init__.py +1 -0
- winipedia_utils/{git → utils/git}/github/repo/repo.py +1 -1
- winipedia_utils/{git → utils/git}/gitignore/gitignore.py +2 -2
- winipedia_utils/{concurrent → utils/iterating/concurrent}/concurrent.py +4 -4
- winipedia_utils/{concurrent → utils/iterating/concurrent}/multiprocessing.py +2 -2
- winipedia_utils/{concurrent → utils/iterating/concurrent}/multithreading.py +1 -1
- winipedia_utils/{logging → utils/logging}/logger.py +1 -1
- winipedia_utils/{modules → utils/modules}/class_.py +15 -8
- winipedia_utils/{modules → utils/modules}/function.py +10 -4
- winipedia_utils/utils/modules/inspection.py +56 -0
- winipedia_utils/{modules → utils/modules}/module.py +27 -32
- winipedia_utils/{modules → utils/modules}/package.py +100 -34
- winipedia_utils/{oop → utils/oop}/mixins/meta.py +4 -4
- winipedia_utils/{oop → utils/oop}/mixins/mixin.py +2 -2
- winipedia_utils/{os → utils/os}/os.py +2 -2
- winipedia_utils/utils/resources/__init__.py +1 -0
- winipedia_utils/utils/resources/svgs/__init__.py +1 -0
- winipedia_utils/{resources → utils/resources}/svgs/svg.py +1 -1
- winipedia_utils/utils/testing/__init__.py +1 -0
- winipedia_utils/{testing → utils/testing}/assertions.py +18 -0
- winipedia_utils/{testing → utils/testing}/skip.py +1 -1
- {winipedia_utils-0.4.43.dist-info → winipedia_utils-0.7.1.dist-info}/METADATA +71 -36
- winipedia_utils-0.7.1.dist-info/RECORD +109 -0
- winipedia_utils/git/github/workflows/base/base.py +0 -294
- winipedia_utils/git/github/workflows/health_check.py +0 -57
- winipedia_utils/git/github/workflows/publish.py +0 -49
- winipedia_utils/git/github/workflows/release.py +0 -45
- winipedia_utils/git/pre_commit/hooks.py +0 -147
- winipedia_utils/projects/poetry/poetry.py +0 -129
- winipedia_utils/testing/__init__.py +0 -1
- winipedia_utils/testing/tests/__init__.py +0 -1
- winipedia_utils/testing/tests/base/__init__.py +0 -1
- winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -1
- winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -1
- winipedia_utils/testing/tests/base/utils/__init__.py +0 -1
- winipedia_utils-0.4.43.dist-info/RECORD +0 -94
- /winipedia_utils/{data/dataframe → artifacts}/__init__.py +0 -0
- /winipedia_utils/{data/structures → dev}/__init__.py +0 -0
- /winipedia_utils/{git/github → dev/artifacts}/__init__.py +0 -0
- /winipedia_utils/{git/github/repo → dev/configs}/__init__.py +0 -0
- /winipedia_utils/{git/github/workflows → dev/configs}/base/__init__.py +0 -0
- /winipedia_utils/{git/github → dev/configs}/workflows/__init__.py +0 -0
- /winipedia_utils/{resources → dev/configs/workflows/base}/__init__.py +0 -0
- /winipedia_utils/{git → dev/git}/__init__.py +0 -0
- /winipedia_utils/{resources/svgs → dev/git/github}/__init__.py +0 -0
- /winipedia_utils/{git → dev/git}/pre_commit/__init__.py +0 -0
- /winipedia_utils/{projects → dev/projects}/__init__.py +0 -0
- /winipedia_utils/{projects → dev/projects}/poetry/__init__.py +0 -0
- /winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/function.py +0 -0
- /winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/package.py +0 -0
- /winipedia_utils/{data → utils/data}/__init__.py +0 -0
- /winipedia_utils/{data → utils/data}/structures/dicts.py +0 -0
- /winipedia_utils/{text → utils/data/structures/text}/__init__.py +0 -0
- /winipedia_utils/{git → utils/git}/gitignore/__init__.py +0 -0
- /winipedia_utils/{iterating → utils/iterating}/__init__.py +0 -0
- /winipedia_utils/{concurrent → utils/iterating/concurrent}/__init__.py +0 -0
- /winipedia_utils/{iterating → utils/iterating}/iterate.py +0 -0
- /winipedia_utils/{logging → utils/logging}/__init__.py +0 -0
- /winipedia_utils/{logging → utils/logging}/ansi.py +0 -0
- /winipedia_utils/{logging → utils/logging}/config.py +0 -0
- /winipedia_utils/{modules → utils/modules}/__init__.py +0 -0
- /winipedia_utils/{oop → utils/oop}/__init__.py +0 -0
- /winipedia_utils/{oop → utils/oop}/mixins/__init__.py +0 -0
- /winipedia_utils/{os → utils/os}/__init__.py +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/delete_garbage_can.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/download_arrow.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/exit_fullscreen_icon.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/fullscreen_icon.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/menu_icon.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/pause_icon.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/play_icon.svg +0 -0
- /winipedia_utils/{resources → utils/resources}/svgs/plus_icon.svg +0 -0
- /winipedia_utils/{security → utils/security}/__init__.py +0 -0
- /winipedia_utils/{security → utils/security}/cryptography.py +0 -0
- /winipedia_utils/{security → utils/security}/keyring.py +0 -0
- /winipedia_utils/{testing → utils/testing}/fixtures.py +0 -0
- {winipedia_utils-0.4.43.dist-info → winipedia_utils-0.7.1.dist-info}/WHEEL +0 -0
- {winipedia_utils-0.4.43.dist-info → winipedia_utils-0.7.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
winipedia_utils/__init__.py,sha256=vOWZ8n-YemVIzDLd8eWw1HVPGH3jxuT6VtDKHbmxk_A,43
|
|
2
|
+
winipedia_utils/artifacts/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
3
|
+
winipedia_utils/artifacts/build.py,sha256=idKMw124cO5M8080AujxGzhYbVTQGIETkf-UxCEh8oY,767
|
|
4
|
+
winipedia_utils/dev/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
5
|
+
winipedia_utils/dev/artifacts/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
6
|
+
winipedia_utils/dev/artifacts/build.py,sha256=DZrhVcmHt3J0kbkn8r4ZQNPXviQGcJIhYPozophs5kA,2064
|
|
7
|
+
winipedia_utils/dev/configs/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
8
|
+
winipedia_utils/dev/configs/base/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
9
|
+
winipedia_utils/dev/configs/base/config.py,sha256=nNtZnsUYBhgppMt8CmxDDmBggFynxaaeEfa1JRJcWPY,7838
|
|
10
|
+
winipedia_utils/dev/configs/gitignore.py,sha256=VYapZJl_K0ss-XIQltjGY6shAp0By_B9QvYQlSk0MVo,2612
|
|
11
|
+
winipedia_utils/dev/configs/pre_commit.py,sha256=ICRAxfHOuFpd6HE9NgziCAj22LNO89JdyOddueE6cTo,1868
|
|
12
|
+
winipedia_utils/dev/configs/pyproject.py,sha256=GpBdNSHVqhw2kpFQibf6NyDlH1-jv-9bNvK0FcQ9aBU,11102
|
|
13
|
+
winipedia_utils/dev/configs/testing.py,sha256=aThPo3fphhzHl6c6Ujvf6AvLAj85jWuhjpDywTgqkUQ,3668
|
|
14
|
+
winipedia_utils/dev/configs/workflows/__init__.py,sha256=BPdntTwFEyBMJ6MyT7gddPHswvRdH9tsRtfK72VSV7Y,57
|
|
15
|
+
winipedia_utils/dev/configs/workflows/base/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
16
|
+
winipedia_utils/dev/configs/workflows/base/base.py,sha256=3dO25DiPcPUHYj_Ha9a6s4_1DD67bb-R9brU3a9-bC0,28775
|
|
17
|
+
winipedia_utils/dev/configs/workflows/health_check.py,sha256=KChweSxamAjgy1uOrRcpIQ5wdn4JzrRhT8x28XhVTXk,2168
|
|
18
|
+
winipedia_utils/dev/configs/workflows/publish.py,sha256=SPrG2E8MERtcgNd9x6adM9Rsvks9zWq-CwzcuJMYEgE,1472
|
|
19
|
+
winipedia_utils/dev/configs/workflows/release.py,sha256=zZr4AHMOaexxZgbS5gdXexK10WcZmUGh_cJG5riMlKo,2923
|
|
20
|
+
winipedia_utils/dev/git/__init__.py,sha256=IRmEVz0sUEw47Eli--57YaypWitxlcYThT_ulwkhNTE,47
|
|
21
|
+
winipedia_utils/dev/git/github/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
22
|
+
winipedia_utils/dev/git/github/repo/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
23
|
+
winipedia_utils/dev/git/github/repo/protect.py,sha256=HYB9cunOkGnqImIR9F0jQfBedkVtlHMaRgOwTqejrpM,3169
|
|
24
|
+
winipedia_utils/dev/git/pre_commit/__init__.py,sha256=gFLVGQRmS6abgy5MfPQy_GZiF1_hGxuXtcOHX95WL-A,58
|
|
25
|
+
winipedia_utils/dev/git/pre_commit/hooks.py,sha256=wwrzeugiwdKh-FIQ7iZWJSp9uqyj7Ec0kkZtVv7VO6U,2483
|
|
26
|
+
winipedia_utils/dev/git/pre_commit/run_hooks.py,sha256=E2GiW88MYd3x4x6whYlmmb8zwoAdyFGmI4dg03LoDs4,1797
|
|
27
|
+
winipedia_utils/dev/projects/__init__.py,sha256=_iYHzUcTPmutpsExPDcMF9OQDgnz-kTSuWens9iP9bI,52
|
|
28
|
+
winipedia_utils/dev/projects/poetry/__init__.py,sha256=tbvV3wYd3H39hjjlKbF84Irj4hYgv1A7KWyXdCQzFro,59
|
|
29
|
+
winipedia_utils/dev/projects/poetry/dev_deps.py,sha256=8QIunGKoqlNlq1Co5bT3UWzoxIiiEGpGP9si7xLI0P0,535
|
|
30
|
+
winipedia_utils/dev/projects/poetry/poetry.py,sha256=Uhuk9nGNWjzv4gql3-dELcFC9Q3f54GH_kWSx0GltYE,8490
|
|
31
|
+
winipedia_utils/dev/projects/project.py,sha256=jGzWNpJ4abMiKNlBLPlFS2TG7MQpd0ijYlmWzjll3k4,537
|
|
32
|
+
winipedia_utils/dev/testing/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
33
|
+
winipedia_utils/dev/testing/convention.py,sha256=YAozeOwrKlq6K6u30_bYXUFtxfFtGP0lf1SdbKrojqU,4839
|
|
34
|
+
winipedia_utils/dev/testing/create_tests.py,sha256=msLIBh8o5W1EJWCOcYy7YLgg3iEs_g5YefAZJvzdY4I,9416
|
|
35
|
+
winipedia_utils/dev/testing/tests/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
36
|
+
winipedia_utils/dev/testing/tests/base/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
37
|
+
winipedia_utils/dev/testing/tests/base/fixtures/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
38
|
+
winipedia_utils/dev/testing/tests/base/fixtures/fixture.py,sha256=7R4Az6kRiL8sEowenbS4QjvWvnWf9X_ZfxVqvJoMsbs,1220
|
|
39
|
+
winipedia_utils/dev/testing/tests/base/fixtures/scopes/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
40
|
+
winipedia_utils/dev/testing/tests/base/fixtures/scopes/class_.py,sha256=j9umMWRcFTTKZ5Dt40Cv4pxkxdSlalkDk-DvfHpDb7g,1092
|
|
41
|
+
winipedia_utils/dev/testing/tests/base/fixtures/scopes/function.py,sha256=l1zCCiTkXUSZp0n9QOyejhfszFJiMH88bhGMwNY5r8A,302
|
|
42
|
+
winipedia_utils/dev/testing/tests/base/fixtures/scopes/module.py,sha256=-Ugy1Jsao9Qkk2MHl-6dXHMKKE9hTgqHKgSUZcR1OmM,1228
|
|
43
|
+
winipedia_utils/dev/testing/tests/base/fixtures/scopes/package.py,sha256=pR3so6QPymIRM4PJTODrlBKI-yQnZ2P78BsiyTPaF8o,302
|
|
44
|
+
winipedia_utils/dev/testing/tests/base/fixtures/scopes/session.py,sha256=GpDyhXdroGGYTNX6EgapxKJIc_h0gw6CuKgtA7YpgFI,6141
|
|
45
|
+
winipedia_utils/dev/testing/tests/base/utils/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
46
|
+
winipedia_utils/dev/testing/tests/base/utils/utils.py,sha256=yF8K6oliUsyLmr0lfq-QYIpNy2uWYbQhTK59zJoo0sE,25
|
|
47
|
+
winipedia_utils/dev/testing/tests/conftest.py,sha256=zHeokbp6R2iAn2bmm5BDXqyR9Mtf7QE0evZycTBf_vE,898
|
|
48
|
+
winipedia_utils/dev/testing/utils.py,sha256=ZJeY7_PdoirU0bkSQ-bqByYBYD8ElhBubdMfI2dnYeM,2207
|
|
49
|
+
winipedia_utils/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
50
|
+
winipedia_utils/setup.py,sha256=K91g_pK5ezkGMwqnl3rAaeF8PFbgZa2ury53e0tzRM0,1486
|
|
51
|
+
winipedia_utils/utils/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
52
|
+
winipedia_utils/utils/data/__init__.py,sha256=o6SXX1gBCwhb9abo8xTfZtqUNuLqXmdo2VervnJxRzc,48
|
|
53
|
+
winipedia_utils/utils/data/dataframe/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
54
|
+
winipedia_utils/utils/data/dataframe/cleaning.py,sha256=w6N0los24ZfsEQB2FDAzhVpjR8TJeJlt_VBfROmpPuw,23438
|
|
55
|
+
winipedia_utils/utils/data/structures/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
56
|
+
winipedia_utils/utils/data/structures/dicts.py,sha256=jsFzQ96cvyHsvPSnsEUhksuWvLSGq6-Rryfw6gEXq-c,274
|
|
57
|
+
winipedia_utils/utils/data/structures/text/__init__.py,sha256=j2bwtK6kyeHI6SnoBjpRju0C1W2n2paXBDlNjNtaUxA,48
|
|
58
|
+
winipedia_utils/utils/data/structures/text/string.py,sha256=Sq7aQ6YMB6sVBsYQYZ2P9d8uEe9zIvi8aUMYjyRQOwk,4453
|
|
59
|
+
winipedia_utils/utils/git/__init__.py,sha256=IRmEVz0sUEw47Eli--57YaypWitxlcYThT_ulwkhNTE,47
|
|
60
|
+
winipedia_utils/utils/git/github/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
61
|
+
winipedia_utils/utils/git/github/github.py,sha256=FzmvxGOny0oPp-pV0SiZRSMC2HHE0SuA5ak8QFZwt-M,826
|
|
62
|
+
winipedia_utils/utils/git/github/repo/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
63
|
+
winipedia_utils/utils/git/github/repo/repo.py,sha256=85LXlADugpvRY-KHbSdd2z5upLFnMakOHmi3ZFy5J3M,7871
|
|
64
|
+
winipedia_utils/utils/git/gitignore/__init__.py,sha256=k-2E26JaZPkF69UUOJkpQl8T_PudrC7EYCIOxwgIQVU,57
|
|
65
|
+
winipedia_utils/utils/git/gitignore/gitignore.py,sha256=1lNqG9EFFz2b0tWqcO__Go3_3vhw9yeNqg35ATPYdCU,2426
|
|
66
|
+
winipedia_utils/utils/iterating/__init__.py,sha256=rlF9hzxbowq5yOfcXvOKOQdB-EQmfrislQpf659Zeu4,53
|
|
67
|
+
winipedia_utils/utils/iterating/concurrent/__init__.py,sha256=Tu0ig4gVCk_f1n74G35hDwH-WS3P3STVQGWjxTIbbo8,54
|
|
68
|
+
winipedia_utils/utils/iterating/concurrent/concurrent.py,sha256=z0mezS9uvmi5cKdNFud46Ts52U__8hhXObJL0wsGuGg,8692
|
|
69
|
+
winipedia_utils/utils/iterating/concurrent/multiprocessing.py,sha256=8W-dJ6z12z1grxgQH53Dk87N0yse5EYKWUniyVMUkW8,4743
|
|
70
|
+
winipedia_utils/utils/iterating/concurrent/multithreading.py,sha256=4lBuZQUxep-1omnB4Gf-5xXwoBbNwsq52-sNoI8qZ4U,3096
|
|
71
|
+
winipedia_utils/utils/iterating/iterate.py,sha256=k4U6qrnE4zij-GJhI5X0wM3pveSi8wtEsA1i8xQrfG0,3522
|
|
72
|
+
winipedia_utils/utils/logging/__init__.py,sha256=AMt1LwA_E7hexYjMpGzUempoyDdAF-dowWvq59wC5aM,51
|
|
73
|
+
winipedia_utils/utils/logging/ansi.py,sha256=7Z-FITaUn5B1ZE0OUVARjNzuMui1V36iu4YTjlD6QfI,101
|
|
74
|
+
winipedia_utils/utils/logging/config.py,sha256=sdC3GHMkJqlY-WwIsOMeTcy1bihthWV2LbvxLt9dhc4,2895
|
|
75
|
+
winipedia_utils/utils/logging/logger.py,sha256=IZDNiDBWVauA7UsZj5HXnCLMzBQM2zN9YDWhCHg0DbM,707
|
|
76
|
+
winipedia_utils/utils/modules/__init__.py,sha256=e3CFaC3FhK4ibknFOv1bqOZxA7XeVwmLqWX7oajUm78,51
|
|
77
|
+
winipedia_utils/utils/modules/class_.py,sha256=iEtrvbGju1LVlTGP3fUmF5kajW0FDsk9ZSHeM4ns0EI,5685
|
|
78
|
+
winipedia_utils/utils/modules/function.py,sha256=0QtHtfAjKal3GRRU9CP4LfHgoIHpbU88AgTZ2fv6v9k,3491
|
|
79
|
+
winipedia_utils/utils/modules/inspection.py,sha256=XPSJfLN6WnNmbXn-6z9D01cmqmPS-HrTPy6-B6C34tw,1821
|
|
80
|
+
winipedia_utils/utils/modules/module.py,sha256=kMV1wH8S2incHUlMKgP5CmIJXjYXaka_s_e_M5XyV7M,12835
|
|
81
|
+
winipedia_utils/utils/modules/package.py,sha256=zlobKYKqMBYcQsqGCc0v0DeLpLUQTDDayi-fm3bduek,17295
|
|
82
|
+
winipedia_utils/utils/oop/__init__.py,sha256=wGjsVwLbTVEQWOfDJvN9nlvC-3NmAi8Doc2xIrm6e78,47
|
|
83
|
+
winipedia_utils/utils/oop/mixins/__init__.py,sha256=PDK-cJcdRUfDUCz36qQ5pmMW07G133WtN49OpmILGNI,54
|
|
84
|
+
winipedia_utils/utils/oop/mixins/meta.py,sha256=fnH2jVXWMIObdb2PQH0p0-j1kfFdEeD2_QWvWM2UivY,11190
|
|
85
|
+
winipedia_utils/utils/oop/mixins/mixin.py,sha256=h1Fc5ZhESFv7g9dhpSWcMN1B6VPh2BHjPwWmzM9Tomc,1413
|
|
86
|
+
winipedia_utils/utils/os/__init__.py,sha256=cBRq8hWhaWvYeC3cSBYL6Y70kM9COQWHj8vVxxSadIg,46
|
|
87
|
+
winipedia_utils/utils/os/os.py,sha256=giBJDrWewOtxoSExNj6y_afOcxhpDAVGs2W93xUR96k,1777
|
|
88
|
+
winipedia_utils/utils/resources/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
89
|
+
winipedia_utils/utils/resources/svgs/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
90
|
+
winipedia_utils/utils/resources/svgs/delete_garbage_can.svg,sha256=UxEEh46w1JD4VViUBx-Ahaq5_ZR4zOjfeJn5_aM8114,318
|
|
91
|
+
winipedia_utils/utils/resources/svgs/download_arrow.svg,sha256=8g_cBwKFHyoeSmaLMXcGwIHT4_rZDDtDGm35E0PkniE,242
|
|
92
|
+
winipedia_utils/utils/resources/svgs/exit_fullscreen_icon.svg,sha256=sZSexEjab82zhAK3JRtOWH19aAFa1GhuGLChDz9wFFc,523
|
|
93
|
+
winipedia_utils/utils/resources/svgs/fullscreen_icon.svg,sha256=mm2n6WvaSu0OqiQSAw0QPNwzXpPLaF53_XAklUfQQPo,406
|
|
94
|
+
winipedia_utils/utils/resources/svgs/menu_icon.svg,sha256=pA1Z_x5gDkhYLQA0dL0l_8uBP-e6mKLcEOYwlhURUv4,344
|
|
95
|
+
winipedia_utils/utils/resources/svgs/pause_icon.svg,sha256=z-Cj3DOI0rwRbWCOhaiHtDQYM4s6OgkCBVcdip77rQE,179
|
|
96
|
+
winipedia_utils/utils/resources/svgs/play_icon.svg,sha256=7gx1EWZnyu1pA6WboAfVH3OGcp_uYPpT1syqHe-jaGE,953
|
|
97
|
+
winipedia_utils/utils/resources/svgs/plus_icon.svg,sha256=1ucedu8ucLI7LMNsfNN2GYiwNUe8-ViNBcanDwzTqHc,552
|
|
98
|
+
winipedia_utils/utils/resources/svgs/svg.py,sha256=Mqvvwjk_64aHe9T9epZ1ulHt6grBWnZgK3bnPpSyldU,421
|
|
99
|
+
winipedia_utils/utils/security/__init__.py,sha256=HmGXOCROqIGHlBs2bEWRMkEX3rlXNsnA9Tef58AlCo4,52
|
|
100
|
+
winipedia_utils/utils/security/cryptography.py,sha256=5LMat3-9nDW2cQBr_dU7MFRdgbiK53zQqHyacs-Jq-s,793
|
|
101
|
+
winipedia_utils/utils/security/keyring.py,sha256=6kKgSTz1G80F6XeZ3Lskxdl2N6JgUH8gJdFYcGJuysU,2273
|
|
102
|
+
winipedia_utils/utils/testing/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
103
|
+
winipedia_utils/utils/testing/assertions.py,sha256=FYuDIeeQKCbaKFaGRnNWkxlJ-xNoPyxwCjq3vtM9Oz4,1914
|
|
104
|
+
winipedia_utils/utils/testing/fixtures.py,sha256=G8QIrZXndtud0uOk6PY3f8IIDoyX_ronogjeLAYGjrM,1033
|
|
105
|
+
winipedia_utils/utils/testing/skip.py,sha256=nxBNqysJaXaXaJOVb-J8K8OGCV0xP_YfgjO0pA3m9u4,492
|
|
106
|
+
winipedia_utils-0.7.1.dist-info/METADATA,sha256=6jeyCPlh7JCi9ar2e_1KP-M2BCT3HieDy6vE3FRA57A,16647
|
|
107
|
+
winipedia_utils-0.7.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
108
|
+
winipedia_utils-0.7.1.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
|
|
109
|
+
winipedia_utils-0.7.1.dist-info/RECORD,,
|
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
"""Contains base utilities for git workflows."""
|
|
2
|
-
|
|
3
|
-
from abc import abstractmethod
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
import winipedia_utils
|
|
8
|
-
from winipedia_utils.modules.module import make_obj_importpath
|
|
9
|
-
from winipedia_utils.modules.package import get_src_package
|
|
10
|
-
from winipedia_utils.projects.poetry.config import PyprojectConfigFile
|
|
11
|
-
from winipedia_utils.text.config import YamlConfigFile
|
|
12
|
-
from winipedia_utils.text.string import split_on_uppercase
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class Workflow(YamlConfigFile):
|
|
16
|
-
"""Base class for workflows."""
|
|
17
|
-
|
|
18
|
-
@classmethod
|
|
19
|
-
@abstractmethod
|
|
20
|
-
def get_workflow_triggers(cls) -> dict[str, Any]:
|
|
21
|
-
"""Get the workflow triggers."""
|
|
22
|
-
|
|
23
|
-
@classmethod
|
|
24
|
-
@abstractmethod
|
|
25
|
-
def get_permissions(cls) -> dict[str, Any]:
|
|
26
|
-
"""Get the workflow permissions."""
|
|
27
|
-
|
|
28
|
-
@classmethod
|
|
29
|
-
@abstractmethod
|
|
30
|
-
def get_jobs(cls) -> dict[str, Any]:
|
|
31
|
-
"""Get the workflow jobs."""
|
|
32
|
-
|
|
33
|
-
@classmethod
|
|
34
|
-
def get_parent_path(cls) -> Path:
|
|
35
|
-
"""Get the path to the config file."""
|
|
36
|
-
return Path(".github/workflows")
|
|
37
|
-
|
|
38
|
-
@classmethod
|
|
39
|
-
def get_configs(cls) -> dict[str, Any]:
|
|
40
|
-
"""Get the workflow config."""
|
|
41
|
-
return {
|
|
42
|
-
"name": cls.get_workflow_name(),
|
|
43
|
-
"on": cls.get_workflow_triggers(),
|
|
44
|
-
"permissions": cls.get_permissions(),
|
|
45
|
-
"run-name": cls.get_run_name(),
|
|
46
|
-
"jobs": cls.get_jobs(),
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
@classmethod
|
|
50
|
-
def get_standard_job(
|
|
51
|
-
cls,
|
|
52
|
-
name: str | None = None,
|
|
53
|
-
runs_on: str = "ubuntu-latest",
|
|
54
|
-
permissions: dict[str, Any] | None = None,
|
|
55
|
-
if_condition: str | None = None,
|
|
56
|
-
steps: list[dict[str, Any]] | None = None,
|
|
57
|
-
) -> dict[str, Any]:
|
|
58
|
-
"""Get a standard job."""
|
|
59
|
-
if name is None:
|
|
60
|
-
name = cls.get_filename()
|
|
61
|
-
|
|
62
|
-
if steps is None:
|
|
63
|
-
steps = []
|
|
64
|
-
|
|
65
|
-
job: dict[str, Any] = {
|
|
66
|
-
name: {
|
|
67
|
-
"runs-on": runs_on,
|
|
68
|
-
"steps": steps,
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if permissions is not None:
|
|
72
|
-
job[name]["permissions"] = permissions
|
|
73
|
-
|
|
74
|
-
if if_condition is not None:
|
|
75
|
-
job[name]["if"] = if_condition
|
|
76
|
-
return job
|
|
77
|
-
|
|
78
|
-
@classmethod
|
|
79
|
-
def get_workflow_name(cls) -> str:
|
|
80
|
-
"""Get the workflow name."""
|
|
81
|
-
return " ".join(split_on_uppercase(cls.__name__))
|
|
82
|
-
|
|
83
|
-
@classmethod
|
|
84
|
-
def get_run_name(cls) -> str:
|
|
85
|
-
"""Get the workflow run name."""
|
|
86
|
-
return f"{cls.get_workflow_name()}"
|
|
87
|
-
|
|
88
|
-
@classmethod
|
|
89
|
-
def get_checkout_step(
|
|
90
|
-
cls,
|
|
91
|
-
fetch_depth: int | None = None,
|
|
92
|
-
*,
|
|
93
|
-
token: bool = False,
|
|
94
|
-
) -> dict[str, Any]:
|
|
95
|
-
"""Get the checkout step.
|
|
96
|
-
|
|
97
|
-
Args:
|
|
98
|
-
fetch_depth: The fetch depth to use. If None, no fetch depth is specified.
|
|
99
|
-
token: Whether to use the repository token.
|
|
100
|
-
|
|
101
|
-
Returns:
|
|
102
|
-
The checkout step.
|
|
103
|
-
"""
|
|
104
|
-
step: dict[str, Any] = {
|
|
105
|
-
"name": "Checkout repository",
|
|
106
|
-
"uses": "actions/checkout@main",
|
|
107
|
-
}
|
|
108
|
-
if fetch_depth is not None:
|
|
109
|
-
step.setdefault("with", {})["fetch-depth"] = fetch_depth
|
|
110
|
-
|
|
111
|
-
if token:
|
|
112
|
-
step.setdefault("with", {})["token"] = cls.get_repo_token()
|
|
113
|
-
return step
|
|
114
|
-
|
|
115
|
-
@classmethod
|
|
116
|
-
def get_poetry_setup_steps(
|
|
117
|
-
cls,
|
|
118
|
-
*,
|
|
119
|
-
install_dependencies: bool = False,
|
|
120
|
-
fetch_depth: int | None = None,
|
|
121
|
-
configure_pipy_token: bool = False,
|
|
122
|
-
force_main_head: bool = False,
|
|
123
|
-
token: bool = False,
|
|
124
|
-
) -> list[dict[str, Any]]:
|
|
125
|
-
"""Get the poetry steps.
|
|
126
|
-
|
|
127
|
-
Args:
|
|
128
|
-
install_dependencies: Whether to install dependencies.
|
|
129
|
-
fetch_depth: The fetch depth to use. If None, no fetch depth is specified.
|
|
130
|
-
configure_pipy_token: Whether to configure the pipy token.
|
|
131
|
-
force_main_head: Whether to exit if the running branch or current commit is not
|
|
132
|
-
equal to the most recent commit on main. This is useful for workflows that
|
|
133
|
-
should only run on main.
|
|
134
|
-
token: Whether to use the repository token.
|
|
135
|
-
|
|
136
|
-
Returns:
|
|
137
|
-
The poetry steps.
|
|
138
|
-
"""
|
|
139
|
-
steps = [cls.get_checkout_step(fetch_depth, token=token)]
|
|
140
|
-
if force_main_head:
|
|
141
|
-
# exit with code 1 if the running branch is not main
|
|
142
|
-
steps.append(
|
|
143
|
-
{
|
|
144
|
-
"name": "Assert running on head of main",
|
|
145
|
-
"run": 'git fetch origin main --depth=1; main_sha=$(git rev-parse origin/main); if [ "$GITHUB_SHA" != "$main_sha" ]; then echo "Tag commit is not the latest commit on main."; exit 1; fi', # noqa: E501
|
|
146
|
-
}
|
|
147
|
-
)
|
|
148
|
-
steps.append(cls.get_setup_git_step())
|
|
149
|
-
steps.append(
|
|
150
|
-
{
|
|
151
|
-
"name": "Setup Python",
|
|
152
|
-
"uses": "actions/setup-python@main",
|
|
153
|
-
"with": {
|
|
154
|
-
"python-version": PyprojectConfigFile.get_latest_possible_python_version() # noqa: E501
|
|
155
|
-
},
|
|
156
|
-
}
|
|
157
|
-
)
|
|
158
|
-
steps.append(
|
|
159
|
-
{
|
|
160
|
-
"name": "Install Poetry",
|
|
161
|
-
"run": "curl -sSL https://install.python-poetry.org | python3 -",
|
|
162
|
-
}
|
|
163
|
-
)
|
|
164
|
-
if configure_pipy_token:
|
|
165
|
-
steps.append(
|
|
166
|
-
{
|
|
167
|
-
"name": "Configure Poetry",
|
|
168
|
-
"run": "poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}",
|
|
169
|
-
}
|
|
170
|
-
)
|
|
171
|
-
if install_dependencies:
|
|
172
|
-
steps.append({"name": "Install Dependencies", "run": "poetry install"})
|
|
173
|
-
return steps
|
|
174
|
-
|
|
175
|
-
@classmethod
|
|
176
|
-
def get_release_steps(cls) -> list[dict[str, Any]]:
|
|
177
|
-
"""Get the release steps."""
|
|
178
|
-
return [
|
|
179
|
-
{
|
|
180
|
-
"name": "Tag and Push",
|
|
181
|
-
"run": f"git push && git tag {cls.get_version()} && git push origin {cls.get_version()}", # noqa: E501
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
"name": "Build Changelog",
|
|
185
|
-
"id": "build_changelog",
|
|
186
|
-
"uses": "mikepenz/release-changelog-builder-action@develop",
|
|
187
|
-
"with": {"token": cls.get_github_token()},
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"name": "Create GitHub Release",
|
|
191
|
-
"uses": "ncipollo/release-action@main",
|
|
192
|
-
"with": {
|
|
193
|
-
"tag": cls.get_version(),
|
|
194
|
-
"name": cls.get_repo_and_version(),
|
|
195
|
-
"body": "${{ steps.build_changelog.outputs.changelog }}",
|
|
196
|
-
},
|
|
197
|
-
},
|
|
198
|
-
]
|
|
199
|
-
|
|
200
|
-
@classmethod
|
|
201
|
-
def get_extract_version_step(cls) -> dict[str, Any]:
|
|
202
|
-
"""Get the extract version step."""
|
|
203
|
-
return {
|
|
204
|
-
"name": "Extract Version from pyproject.toml",
|
|
205
|
-
"id": "version",
|
|
206
|
-
"run": 'version=$(poetry version -s) && echo "Project version: $version" && echo "version=v$version" >> $GITHUB_OUTPUT', # noqa: E501
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
@classmethod
|
|
210
|
-
def get_publish_to_pypi_step(cls) -> dict[str, Any]:
|
|
211
|
-
"""Get the publish step."""
|
|
212
|
-
return {"name": "Build and publish to PyPI", "run": "poetry publish --build"}
|
|
213
|
-
|
|
214
|
-
@classmethod
|
|
215
|
-
def get_pre_commit_step(cls) -> dict[str, Any]:
|
|
216
|
-
"""Get the pre-commit step.
|
|
217
|
-
|
|
218
|
-
using pre commit in case other hooks are added later
|
|
219
|
-
and bc it fails if files are changed,
|
|
220
|
-
setup script shouldnt change files
|
|
221
|
-
"""
|
|
222
|
-
step: dict[str, Any] = {
|
|
223
|
-
"name": "Run Hooks",
|
|
224
|
-
"run": "poetry run pre-commit run --all-files --verbose",
|
|
225
|
-
}
|
|
226
|
-
if get_src_package() == winipedia_utils:
|
|
227
|
-
step["env"] = {"REPO_TOKEN": cls.get_repo_token()}
|
|
228
|
-
return step
|
|
229
|
-
|
|
230
|
-
@classmethod
|
|
231
|
-
def get_setup_git_step(cls) -> dict[str, Any]:
|
|
232
|
-
"""Get the setup git step."""
|
|
233
|
-
return {
|
|
234
|
-
"name": "Setup Git",
|
|
235
|
-
"run": 'git config --global user.email "github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"', # noqa: E501
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
@classmethod
|
|
239
|
-
def get_commit_step(cls) -> dict[str, Any]:
|
|
240
|
-
"""Get the commit step."""
|
|
241
|
-
return {
|
|
242
|
-
"name": "Commit added changes",
|
|
243
|
-
"run": "git commit --no-verify -m '[skip ci] CI/CD: Committing possible added changes (e.g.: pyproject.toml and poetry.lock)'", # noqa: E501
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
@classmethod
|
|
247
|
-
def get_protect_repository_step(cls) -> dict[str, Any]:
|
|
248
|
-
"""Get the protect repository step."""
|
|
249
|
-
from winipedia_utils.git.github.repo import ( # noqa: PLC0415
|
|
250
|
-
protect, # avoid circular import
|
|
251
|
-
)
|
|
252
|
-
|
|
253
|
-
return {
|
|
254
|
-
"name": "Protect Repository",
|
|
255
|
-
"run": f"poetry run python -m {make_obj_importpath(protect)}",
|
|
256
|
-
"env": {
|
|
257
|
-
"REPO_TOKEN": cls.get_repo_token(),
|
|
258
|
-
},
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
@classmethod
|
|
262
|
-
def get_repository_name(cls) -> str:
|
|
263
|
-
"""Get the repository name."""
|
|
264
|
-
return "${{ github.event.repository.name }}"
|
|
265
|
-
|
|
266
|
-
@classmethod
|
|
267
|
-
def get_ref_name(cls) -> str:
|
|
268
|
-
"""Get the ref name."""
|
|
269
|
-
return "${{ github.ref_name }}"
|
|
270
|
-
|
|
271
|
-
@classmethod
|
|
272
|
-
def get_version(cls) -> str:
|
|
273
|
-
"""Get the version."""
|
|
274
|
-
return "${{ steps.version.outputs.version }}"
|
|
275
|
-
|
|
276
|
-
@classmethod
|
|
277
|
-
def get_repo_and_version(cls) -> str:
|
|
278
|
-
"""Get the repository name and ref name."""
|
|
279
|
-
return f"{cls.get_repository_name()} {cls.get_version()}"
|
|
280
|
-
|
|
281
|
-
@classmethod
|
|
282
|
-
def get_ownwer(cls) -> str:
|
|
283
|
-
"""Get the repository owner."""
|
|
284
|
-
return "${{ github.repository_owner }}"
|
|
285
|
-
|
|
286
|
-
@classmethod
|
|
287
|
-
def get_github_token(cls) -> str:
|
|
288
|
-
"""Get the GitHub token."""
|
|
289
|
-
return "${{ secrets.GITHUB_TOKEN }}"
|
|
290
|
-
|
|
291
|
-
@classmethod
|
|
292
|
-
def get_repo_token(cls) -> str:
|
|
293
|
-
"""Get the repository token."""
|
|
294
|
-
return "${{ secrets.REPO_TOKEN }}"
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"""Contains the pull request workflow.
|
|
2
|
-
|
|
3
|
-
This workflow is used to run tests on pull requests.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
from winipedia_utils.git.github.workflows.base.base import Workflow
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class HealthCheckWorkflow(Workflow):
|
|
12
|
-
"""Pull request workflow.
|
|
13
|
-
|
|
14
|
-
This workflow is triggered by a pull request.
|
|
15
|
-
It runs tests on the pull request.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
@classmethod
|
|
19
|
-
def get_workflow_triggers(cls) -> dict[str, Any]:
|
|
20
|
-
"""Get the workflow triggers."""
|
|
21
|
-
return {
|
|
22
|
-
"pull_request": {
|
|
23
|
-
"types": ["opened", "synchronize", "reopened"],
|
|
24
|
-
},
|
|
25
|
-
"schedule": [
|
|
26
|
-
{
|
|
27
|
-
# run every day at 6 am
|
|
28
|
-
"cron": "0 6 * * *",
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
"workflow_dispatch": {},
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@classmethod
|
|
35
|
-
def get_permissions(cls) -> dict[str, Any]:
|
|
36
|
-
"""Get the workflow permissions."""
|
|
37
|
-
return {}
|
|
38
|
-
|
|
39
|
-
@classmethod
|
|
40
|
-
def get_jobs(cls) -> dict[str, Any]:
|
|
41
|
-
"""Get the workflow jobs."""
|
|
42
|
-
return {
|
|
43
|
-
**cls.get_standard_job(
|
|
44
|
-
steps=[
|
|
45
|
-
*(
|
|
46
|
-
cls.get_poetry_setup_steps(
|
|
47
|
-
install_dependencies=True,
|
|
48
|
-
token=True,
|
|
49
|
-
)
|
|
50
|
-
),
|
|
51
|
-
cls.get_protect_repository_step(),
|
|
52
|
-
cls.get_pre_commit_step(),
|
|
53
|
-
cls.get_commit_step(),
|
|
54
|
-
cls.get_extract_version_step(),
|
|
55
|
-
],
|
|
56
|
-
),
|
|
57
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"""Contains the publish workflow.
|
|
2
|
-
|
|
3
|
-
This workflow is used to publish the package to PyPI with poetry.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
from winipedia_utils.git.github.workflows.base.base import Workflow
|
|
9
|
-
from winipedia_utils.git.github.workflows.release import ReleaseWorkflow
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class PublishWorkflow(Workflow):
|
|
13
|
-
"""Publish workflow.
|
|
14
|
-
|
|
15
|
-
This workflow is triggered by the release workflow.
|
|
16
|
-
It publishes the package to PyPI with poetry.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
@classmethod
|
|
20
|
-
def get_workflow_triggers(cls) -> dict[str, Any]:
|
|
21
|
-
"""Get the workflow triggers."""
|
|
22
|
-
return {
|
|
23
|
-
"workflow_run": {
|
|
24
|
-
"workflows": [ReleaseWorkflow.get_workflow_name()],
|
|
25
|
-
"types": ["completed"],
|
|
26
|
-
},
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@classmethod
|
|
30
|
-
def get_permissions(cls) -> dict[str, Any]:
|
|
31
|
-
"""Get the workflow permissions."""
|
|
32
|
-
return {
|
|
33
|
-
"contents": "read",
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@classmethod
|
|
37
|
-
def get_jobs(cls) -> dict[str, Any]:
|
|
38
|
-
"""Get the workflow jobs."""
|
|
39
|
-
return cls.get_standard_job(
|
|
40
|
-
steps=[
|
|
41
|
-
*(
|
|
42
|
-
cls.get_poetry_setup_steps(
|
|
43
|
-
configure_pipy_token=True,
|
|
44
|
-
)
|
|
45
|
-
),
|
|
46
|
-
cls.get_publish_to_pypi_step(),
|
|
47
|
-
],
|
|
48
|
-
if_condition="${{ github.event.workflow_run.conclusion == 'success' }}",
|
|
49
|
-
)
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"""Contains the release workflow.
|
|
2
|
-
|
|
3
|
-
This workflow is used to create a release on GitHub.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
from winipedia_utils.git.github.workflows.health_check import HealthCheckWorkflow
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class ReleaseWorkflow(HealthCheckWorkflow):
|
|
12
|
-
"""Release workflow.
|
|
13
|
-
|
|
14
|
-
This workflow is triggered by a push to the main branch.
|
|
15
|
-
It creates a tag for the release and builds a changelog.
|
|
16
|
-
With tag and changelog it creates a release on GitHub
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
@classmethod
|
|
20
|
-
def get_workflow_triggers(cls) -> dict[str, Any]:
|
|
21
|
-
"""Get the workflow triggers."""
|
|
22
|
-
return {
|
|
23
|
-
"push": {"branches": ["main"]},
|
|
24
|
-
"workflow_dispatch": {},
|
|
25
|
-
"schedule": [
|
|
26
|
-
{
|
|
27
|
-
# run every Tuesday at 6 am
|
|
28
|
-
"cron": "0 6 * * 2",
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@classmethod
|
|
34
|
-
def get_permissions(cls) -> dict[str, Any]:
|
|
35
|
-
"""Get the workflow permissions."""
|
|
36
|
-
permissions = super().get_permissions()
|
|
37
|
-
permissions["contents"] = "write"
|
|
38
|
-
return permissions
|
|
39
|
-
|
|
40
|
-
@classmethod
|
|
41
|
-
def get_jobs(cls) -> dict[str, Any]:
|
|
42
|
-
"""Get the workflow jobs."""
|
|
43
|
-
steps = super().get_jobs()
|
|
44
|
-
steps[cls.get_filename()]["steps"].extend(cls.get_release_steps())
|
|
45
|
-
return steps
|