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.

Files changed (120) hide show
  1. winipedia_utils/artifacts/build.py +27 -0
  2. winipedia_utils/dev/artifacts/build.py +62 -0
  3. winipedia_utils/{text → dev/configs/base}/config.py +16 -11
  4. winipedia_utils/{git/gitignore/config.py → dev/configs/gitignore.py} +2 -2
  5. winipedia_utils/{git/pre_commit/config.py → dev/configs/pre_commit.py} +6 -6
  6. winipedia_utils/{projects/poetry/config.py → dev/configs/pyproject.py} +120 -32
  7. winipedia_utils/{testing/config.py → dev/configs/testing.py} +7 -4
  8. winipedia_utils/dev/configs/workflows/base/base.py +907 -0
  9. winipedia_utils/dev/configs/workflows/health_check.py +69 -0
  10. winipedia_utils/dev/configs/workflows/publish.py +51 -0
  11. winipedia_utils/dev/configs/workflows/release.py +91 -0
  12. winipedia_utils/dev/git/github/repo/__init__.py +1 -0
  13. winipedia_utils/{git → dev/git}/github/repo/protect.py +5 -5
  14. winipedia_utils/dev/git/pre_commit/hooks.py +85 -0
  15. winipedia_utils/{git → dev/git}/pre_commit/run_hooks.py +23 -13
  16. winipedia_utils/dev/projects/poetry/dev_deps.py +21 -0
  17. winipedia_utils/dev/projects/poetry/poetry.py +248 -0
  18. winipedia_utils/{projects → dev/projects}/project.py +6 -7
  19. winipedia_utils/dev/testing/__init__.py +1 -0
  20. winipedia_utils/{testing → dev/testing}/convention.py +1 -1
  21. winipedia_utils/{testing → dev/testing}/create_tests.py +14 -14
  22. winipedia_utils/dev/testing/tests/__init__.py +1 -0
  23. winipedia_utils/dev/testing/tests/base/__init__.py +1 -0
  24. winipedia_utils/dev/testing/tests/base/fixtures/__init__.py +1 -0
  25. winipedia_utils/{testing → dev/testing}/tests/base/fixtures/fixture.py +1 -1
  26. winipedia_utils/dev/testing/tests/base/fixtures/scopes/__init__.py +1 -0
  27. winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/class_.py +2 -2
  28. winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/module.py +2 -2
  29. winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/session.py +10 -10
  30. winipedia_utils/dev/testing/tests/base/utils/__init__.py +1 -0
  31. winipedia_utils/dev/testing/tests/base/utils/utils.py +1 -0
  32. winipedia_utils/{testing → dev/testing}/tests/conftest.py +2 -2
  33. winipedia_utils/{testing/tests/base/utils → dev/testing}/utils.py +7 -24
  34. winipedia_utils/setup.py +9 -5
  35. winipedia_utils/utils/__init__.py +1 -0
  36. winipedia_utils/utils/data/dataframe/__init__.py +1 -0
  37. winipedia_utils/{data → utils/data}/dataframe/cleaning.py +1 -1
  38. winipedia_utils/utils/data/structures/__init__.py +1 -0
  39. winipedia_utils/{text → utils/data/structures/text}/string.py +36 -3
  40. winipedia_utils/utils/git/__init__.py +1 -0
  41. winipedia_utils/utils/git/github/__init__.py +1 -0
  42. winipedia_utils/{git → utils/git}/github/github.py +1 -1
  43. winipedia_utils/utils/git/github/repo/__init__.py +1 -0
  44. winipedia_utils/{git → utils/git}/github/repo/repo.py +1 -1
  45. winipedia_utils/{git → utils/git}/gitignore/gitignore.py +2 -2
  46. winipedia_utils/{concurrent → utils/iterating/concurrent}/concurrent.py +4 -4
  47. winipedia_utils/{concurrent → utils/iterating/concurrent}/multiprocessing.py +2 -2
  48. winipedia_utils/{concurrent → utils/iterating/concurrent}/multithreading.py +1 -1
  49. winipedia_utils/{logging → utils/logging}/logger.py +1 -1
  50. winipedia_utils/{modules → utils/modules}/class_.py +15 -8
  51. winipedia_utils/{modules → utils/modules}/function.py +10 -4
  52. winipedia_utils/utils/modules/inspection.py +56 -0
  53. winipedia_utils/{modules → utils/modules}/module.py +27 -32
  54. winipedia_utils/{modules → utils/modules}/package.py +100 -34
  55. winipedia_utils/{oop → utils/oop}/mixins/meta.py +4 -4
  56. winipedia_utils/{oop → utils/oop}/mixins/mixin.py +2 -2
  57. winipedia_utils/{os → utils/os}/os.py +2 -2
  58. winipedia_utils/utils/resources/__init__.py +1 -0
  59. winipedia_utils/utils/resources/svgs/__init__.py +1 -0
  60. winipedia_utils/{resources → utils/resources}/svgs/svg.py +1 -1
  61. winipedia_utils/utils/testing/__init__.py +1 -0
  62. winipedia_utils/{testing → utils/testing}/assertions.py +18 -0
  63. winipedia_utils/{testing → utils/testing}/skip.py +1 -1
  64. {winipedia_utils-0.4.43.dist-info → winipedia_utils-0.7.1.dist-info}/METADATA +71 -36
  65. winipedia_utils-0.7.1.dist-info/RECORD +109 -0
  66. winipedia_utils/git/github/workflows/base/base.py +0 -294
  67. winipedia_utils/git/github/workflows/health_check.py +0 -57
  68. winipedia_utils/git/github/workflows/publish.py +0 -49
  69. winipedia_utils/git/github/workflows/release.py +0 -45
  70. winipedia_utils/git/pre_commit/hooks.py +0 -147
  71. winipedia_utils/projects/poetry/poetry.py +0 -129
  72. winipedia_utils/testing/__init__.py +0 -1
  73. winipedia_utils/testing/tests/__init__.py +0 -1
  74. winipedia_utils/testing/tests/base/__init__.py +0 -1
  75. winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -1
  76. winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -1
  77. winipedia_utils/testing/tests/base/utils/__init__.py +0 -1
  78. winipedia_utils-0.4.43.dist-info/RECORD +0 -94
  79. /winipedia_utils/{data/dataframe → artifacts}/__init__.py +0 -0
  80. /winipedia_utils/{data/structures → dev}/__init__.py +0 -0
  81. /winipedia_utils/{git/github → dev/artifacts}/__init__.py +0 -0
  82. /winipedia_utils/{git/github/repo → dev/configs}/__init__.py +0 -0
  83. /winipedia_utils/{git/github/workflows → dev/configs}/base/__init__.py +0 -0
  84. /winipedia_utils/{git/github → dev/configs}/workflows/__init__.py +0 -0
  85. /winipedia_utils/{resources → dev/configs/workflows/base}/__init__.py +0 -0
  86. /winipedia_utils/{git → dev/git}/__init__.py +0 -0
  87. /winipedia_utils/{resources/svgs → dev/git/github}/__init__.py +0 -0
  88. /winipedia_utils/{git → dev/git}/pre_commit/__init__.py +0 -0
  89. /winipedia_utils/{projects → dev/projects}/__init__.py +0 -0
  90. /winipedia_utils/{projects → dev/projects}/poetry/__init__.py +0 -0
  91. /winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/function.py +0 -0
  92. /winipedia_utils/{testing → dev/testing}/tests/base/fixtures/scopes/package.py +0 -0
  93. /winipedia_utils/{data → utils/data}/__init__.py +0 -0
  94. /winipedia_utils/{data → utils/data}/structures/dicts.py +0 -0
  95. /winipedia_utils/{text → utils/data/structures/text}/__init__.py +0 -0
  96. /winipedia_utils/{git → utils/git}/gitignore/__init__.py +0 -0
  97. /winipedia_utils/{iterating → utils/iterating}/__init__.py +0 -0
  98. /winipedia_utils/{concurrent → utils/iterating/concurrent}/__init__.py +0 -0
  99. /winipedia_utils/{iterating → utils/iterating}/iterate.py +0 -0
  100. /winipedia_utils/{logging → utils/logging}/__init__.py +0 -0
  101. /winipedia_utils/{logging → utils/logging}/ansi.py +0 -0
  102. /winipedia_utils/{logging → utils/logging}/config.py +0 -0
  103. /winipedia_utils/{modules → utils/modules}/__init__.py +0 -0
  104. /winipedia_utils/{oop → utils/oop}/__init__.py +0 -0
  105. /winipedia_utils/{oop → utils/oop}/mixins/__init__.py +0 -0
  106. /winipedia_utils/{os → utils/os}/__init__.py +0 -0
  107. /winipedia_utils/{resources → utils/resources}/svgs/delete_garbage_can.svg +0 -0
  108. /winipedia_utils/{resources → utils/resources}/svgs/download_arrow.svg +0 -0
  109. /winipedia_utils/{resources → utils/resources}/svgs/exit_fullscreen_icon.svg +0 -0
  110. /winipedia_utils/{resources → utils/resources}/svgs/fullscreen_icon.svg +0 -0
  111. /winipedia_utils/{resources → utils/resources}/svgs/menu_icon.svg +0 -0
  112. /winipedia_utils/{resources → utils/resources}/svgs/pause_icon.svg +0 -0
  113. /winipedia_utils/{resources → utils/resources}/svgs/play_icon.svg +0 -0
  114. /winipedia_utils/{resources → utils/resources}/svgs/plus_icon.svg +0 -0
  115. /winipedia_utils/{security → utils/security}/__init__.py +0 -0
  116. /winipedia_utils/{security → utils/security}/cryptography.py +0 -0
  117. /winipedia_utils/{security → utils/security}/keyring.py +0 -0
  118. /winipedia_utils/{testing → utils/testing}/fixtures.py +0 -0
  119. {winipedia_utils-0.4.43.dist-info → winipedia_utils-0.7.1.dist-info}/WHEEL +0 -0
  120. {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