winipedia-utils 0.5.19__tar.gz → 0.6.7__tar.gz
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.
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/PKG-INFO +18 -17
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/README.md +17 -16
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/pyproject.toml +3 -17
- winipedia_utils-0.6.7/winipedia_utils/artifacts/build.py +78 -0
- winipedia_utils-0.6.7/winipedia_utils/git/github/workflows/base/base.py +889 -0
- winipedia_utils-0.6.7/winipedia_utils/git/github/workflows/health_check.py +69 -0
- winipedia_utils-0.6.7/winipedia_utils/git/github/workflows/publish.py +51 -0
- winipedia_utils-0.6.7/winipedia_utils/git/github/workflows/release.py +90 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/pre_commit/config.py +2 -2
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/pre_commit/hooks.py +0 -18
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/pre_commit/run_hooks.py +3 -5
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/modules/package.py +0 -27
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/projects/poetry/config.py +53 -10
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/projects/project.py +1 -2
- winipedia_utils-0.6.7/winipedia_utils/resources/svgs/__init__.py +1 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/text/string.py +30 -0
- winipedia_utils-0.5.19/winipedia_utils/git/github/workflows/base/base.py +0 -377
- winipedia_utils-0.5.19/winipedia_utils/git/github/workflows/health_check.py +0 -80
- winipedia_utils-0.5.19/winipedia_utils/git/github/workflows/publish.py +0 -49
- winipedia_utils-0.5.19/winipedia_utils/git/github/workflows/release.py +0 -51
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/LICENSE +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/__init__.py +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/data/dataframe → winipedia_utils-0.6.7/winipedia_utils/artifacts}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/concurrent/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/concurrent/concurrent.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/concurrent/multiprocessing.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/concurrent/multithreading.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/data/__init__.py +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/data/structures → winipedia_utils-0.6.7/winipedia_utils/data/dataframe}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/data/dataframe/cleaning.py +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/git/github → winipedia_utils-0.6.7/winipedia_utils/data/structures}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/data/structures/dicts.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/__init__.py +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/git/github/repo → winipedia_utils-0.6.7/winipedia_utils/git/github}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/github/github.py +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/git/github/workflows/base → winipedia_utils-0.6.7/winipedia_utils/git/github/repo}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/github/repo/protect.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/github/repo/repo.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/github/workflows/__init__.py +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/resources → winipedia_utils-0.6.7/winipedia_utils/git/github/workflows/base}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/gitignore/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/gitignore/config.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/gitignore/gitignore.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/git/pre_commit/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/iterating/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/iterating/iterate.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/logging/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/logging/ansi.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/logging/config.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/logging/logger.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/modules/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/modules/class_.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/modules/function.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/modules/inspection.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/modules/module.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/oop/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/oop/mixins/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/oop/mixins/meta.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/oop/mixins/mixin.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/os/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/os/os.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/projects/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/projects/poetry/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/projects/poetry/poetry.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/py.typed +0 -0
- {winipedia_utils-0.5.19/winipedia_utils/resources/svgs → winipedia_utils-0.6.7/winipedia_utils/resources}/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/delete_garbage_can.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/download_arrow.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/fullscreen_icon.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/menu_icon.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/pause_icon.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/play_icon.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/plus_icon.svg +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/resources/svgs/svg.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/security/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/security/cryptography.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/security/keyring.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/setup.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/assertions.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/config.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/convention.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/create_tests.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/fixtures.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/skip.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/testing/tests/conftest.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/text/__init__.py +0 -0
- {winipedia_utils-0.5.19 → winipedia_utils-0.6.7}/winipedia_utils/text/config.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: winipedia-utils
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.7
|
|
4
4
|
Summary: A package with many utility functions
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -136,7 +136,7 @@ The health check workflow consists of two jobs:
|
|
|
136
136
|
- Add Poetry to PATH (Windows-specific step)
|
|
137
137
|
- Install dependencies
|
|
138
138
|
- Setup CI keyring
|
|
139
|
-
- Protect repository (applies branch protection rules)
|
|
139
|
+
- Protect repository (applies branch protection rules and repository settings)
|
|
140
140
|
- Run pre-commit hooks (linting, formatting, type checking, security, tests)
|
|
141
141
|
|
|
142
142
|
2. **Aggregation Job** (`health_check`) - Aggregates matrix results into a single status check:
|
|
@@ -145,6 +145,7 @@ The health check workflow consists of two jobs:
|
|
|
145
145
|
- Provides a single status check that can be marked as required in branch protection rules
|
|
146
146
|
|
|
147
147
|
The release workflow extends the health check workflow and adds a release job that runs after all health checks pass.
|
|
148
|
+
A build job is added before the release job if a script src/artifacts/build.py exists. This script is created by the setup command and can be modified to create build artifacts for your project. This script then just needs to create artifacts in a folder called artifacts and those will be uploaded as artifacts to the release.
|
|
148
149
|
|
|
149
150
|
### Pre-commit Hook Workflow
|
|
150
151
|
|
|
@@ -152,21 +153,21 @@ When you commit code using `git commit`, the following checks run automatically:
|
|
|
152
153
|
|
|
153
154
|
Info: If git commit fails bc of ModuleNotFoundError or smth similar, you need to run `poetry run git commit` instead.
|
|
154
155
|
winipedia_utils hook is a python script that depends on winipedia_utils being installed. Poetry is needed to install winipedia_utils.
|
|
155
|
-
Usually VSCode or other IDEs activates the venv automatically when opening the terminal but if not you need to activate it manually or run `poetry run git commit` instead.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
156
|
+
Usually VSCode or other IDEs activates the venv automatically when opening the terminal but if not you need to activate it manually or run `poetry run git commit` instead. It fails fast, so if one hook in winipedia_utils hook fails, the others don't run bc sys.exit(1) is called.
|
|
157
|
+
|
|
158
|
+
Hooks run in the following order:
|
|
159
|
+
|
|
160
|
+
- Update package manager (poetry self update)
|
|
161
|
+
- Install packages (poetry install --with dev)
|
|
162
|
+
- Update packages (poetry update --with dev (winipedia_utils forces all dependencies with * to be updated to latest compatible version))
|
|
163
|
+
- Lock dependencies (poetry lock)
|
|
164
|
+
- Check package manager configs (poetry check --strict)
|
|
165
|
+
- Create tests (python -m winipedia_utils.testing.create_tests)
|
|
166
|
+
- Lint code (ruff check --fix)
|
|
167
|
+
- Format code (ruff format)
|
|
168
|
+
- Check static types (mypy)
|
|
169
|
+
- Check security (bandit -c pyproject.toml -r .)
|
|
170
|
+
- Run tests (pytest (uses pyproject.toml as config))
|
|
170
171
|
|
|
171
172
|
### Auto-generated Test Structure
|
|
172
173
|
|
|
@@ -109,7 +109,7 @@ The health check workflow consists of two jobs:
|
|
|
109
109
|
- Add Poetry to PATH (Windows-specific step)
|
|
110
110
|
- Install dependencies
|
|
111
111
|
- Setup CI keyring
|
|
112
|
-
- Protect repository (applies branch protection rules)
|
|
112
|
+
- Protect repository (applies branch protection rules and repository settings)
|
|
113
113
|
- Run pre-commit hooks (linting, formatting, type checking, security, tests)
|
|
114
114
|
|
|
115
115
|
2. **Aggregation Job** (`health_check`) - Aggregates matrix results into a single status check:
|
|
@@ -118,6 +118,7 @@ The health check workflow consists of two jobs:
|
|
|
118
118
|
- Provides a single status check that can be marked as required in branch protection rules
|
|
119
119
|
|
|
120
120
|
The release workflow extends the health check workflow and adds a release job that runs after all health checks pass.
|
|
121
|
+
A build job is added before the release job if a script src/artifacts/build.py exists. This script is created by the setup command and can be modified to create build artifacts for your project. This script then just needs to create artifacts in a folder called artifacts and those will be uploaded as artifacts to the release.
|
|
121
122
|
|
|
122
123
|
### Pre-commit Hook Workflow
|
|
123
124
|
|
|
@@ -125,21 +126,21 @@ When you commit code using `git commit`, the following checks run automatically:
|
|
|
125
126
|
|
|
126
127
|
Info: If git commit fails bc of ModuleNotFoundError or smth similar, you need to run `poetry run git commit` instead.
|
|
127
128
|
winipedia_utils hook is a python script that depends on winipedia_utils being installed. Poetry is needed to install winipedia_utils.
|
|
128
|
-
Usually VSCode or other IDEs activates the venv automatically when opening the terminal but if not you need to activate it manually or run `poetry run git commit` instead.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
129
|
+
Usually VSCode or other IDEs activates the venv automatically when opening the terminal but if not you need to activate it manually or run `poetry run git commit` instead. It fails fast, so if one hook in winipedia_utils hook fails, the others don't run bc sys.exit(1) is called.
|
|
130
|
+
|
|
131
|
+
Hooks run in the following order:
|
|
132
|
+
|
|
133
|
+
- Update package manager (poetry self update)
|
|
134
|
+
- Install packages (poetry install --with dev)
|
|
135
|
+
- Update packages (poetry update --with dev (winipedia_utils forces all dependencies with * to be updated to latest compatible version))
|
|
136
|
+
- Lock dependencies (poetry lock)
|
|
137
|
+
- Check package manager configs (poetry check --strict)
|
|
138
|
+
- Create tests (python -m winipedia_utils.testing.create_tests)
|
|
139
|
+
- Lint code (ruff check --fix)
|
|
140
|
+
- Format code (ruff format)
|
|
141
|
+
- Check static types (mypy)
|
|
142
|
+
- Check security (bandit -c pyproject.toml -r .)
|
|
143
|
+
- Run tests (pytest (uses pyproject.toml as config))
|
|
143
144
|
|
|
144
145
|
### Auto-generated Test Structure
|
|
145
146
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# Project section
|
|
2
2
|
[project]
|
|
3
3
|
name = "winipedia-utils"
|
|
4
|
-
version = "0.
|
|
4
|
+
version = "0.6.7"
|
|
5
5
|
description = "A package with many utility functions"
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
requires-python = ">=3.12"
|
|
8
|
-
dynamic = [ "dependencies",]
|
|
9
8
|
authors = [
|
|
10
9
|
{ name = "Winipedia", email = "win.steveker@gmx.de"}
|
|
11
10
|
]
|
|
12
11
|
license = "MIT"
|
|
12
|
+
dependencies = ["polars", "pyyaml", "keyring", "pygithub", "pathspec", "networkx", "setuptools", "tqdm", "defusedxml", "cryptography", "tomlkit", "dotenv"]
|
|
13
13
|
|
|
14
|
-
# Build system section
|
|
14
|
+
# Build system section[build-system]
|
|
15
15
|
[build-system]
|
|
16
16
|
requires = [ "poetry-core>=2.0.0,<3.0.0",]
|
|
17
17
|
build-backend = "poetry.core.masonry.api"
|
|
@@ -20,20 +20,6 @@ build-backend = "poetry.core.masonry.api"
|
|
|
20
20
|
[[tool.poetry.packages]]
|
|
21
21
|
include = "winipedia_utils"
|
|
22
22
|
|
|
23
|
-
[tool.poetry.dependencies]
|
|
24
|
-
tqdm = "*"
|
|
25
|
-
setuptools = "*"
|
|
26
|
-
defusedxml = "*"
|
|
27
|
-
tomlkit = "*"
|
|
28
|
-
pathspec = "*"
|
|
29
|
-
pyyaml = "*"
|
|
30
|
-
keyring = "*"
|
|
31
|
-
cryptography = "*"
|
|
32
|
-
polars = "*"
|
|
33
|
-
pygithub = "*"
|
|
34
|
-
dotenv = "*"
|
|
35
|
-
networkx = "*"
|
|
36
|
-
|
|
37
23
|
[tool.poetry.group.dev.dependencies]
|
|
38
24
|
ruff = "*"
|
|
39
25
|
pre-commit = "*"
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"""Build utilities for creating and managing project builds.
|
|
2
|
+
|
|
3
|
+
This module provides functions for building and managing project artifacts,
|
|
4
|
+
including creating build scripts, configuring build environments, and
|
|
5
|
+
handling build dependencies. These utilities help with the packaging and
|
|
6
|
+
distribution of project code.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import platform
|
|
10
|
+
from abc import abstractmethod
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
from winipedia_utils.git.github.workflows.base.base import Workflow
|
|
14
|
+
from winipedia_utils.oop.mixins.mixin import ABCLoggingMixin
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Build(ABCLoggingMixin):
|
|
18
|
+
"""Base class for build scripts.
|
|
19
|
+
|
|
20
|
+
Subclass this class and implement the get_artifacts method to create
|
|
21
|
+
a build script for your project. The build method will be called
|
|
22
|
+
automatically when the class is initialized. At the end of the file add
|
|
23
|
+
if __name__ == "__main__":
|
|
24
|
+
YourBuildClass()
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
ARTIFACTS_PATH = Workflow.ARTIFACTS_PATH
|
|
28
|
+
|
|
29
|
+
@classmethod
|
|
30
|
+
@abstractmethod
|
|
31
|
+
def get_artifacts(cls) -> list[Path]:
|
|
32
|
+
"""Build the project.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
list[Path]: List of paths to the built artifacts
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def __init__(cls) -> None:
|
|
40
|
+
"""Initialize the build script."""
|
|
41
|
+
cls.build()
|
|
42
|
+
|
|
43
|
+
@classmethod
|
|
44
|
+
def build(cls) -> None:
|
|
45
|
+
"""Build the project.
|
|
46
|
+
|
|
47
|
+
This method is called by the __init__ method.
|
|
48
|
+
It takes all the files and renames them with -platform.system()
|
|
49
|
+
and puts them in the artifacts folder.
|
|
50
|
+
"""
|
|
51
|
+
cls.ARTIFACTS_PATH.mkdir(parents=True, exist_ok=True)
|
|
52
|
+
artifacts = cls.get_artifacts()
|
|
53
|
+
for artifact in artifacts:
|
|
54
|
+
parent = artifact.parent
|
|
55
|
+
if parent != cls.ARTIFACTS_PATH:
|
|
56
|
+
msg = f"You must create {artifact} in {cls.ARTIFACTS_PATH}"
|
|
57
|
+
raise FileNotFoundError(msg)
|
|
58
|
+
|
|
59
|
+
# rename the files with -platform.system()
|
|
60
|
+
new_name = f"{artifact.stem}-{platform.system()}{artifact.suffix}"
|
|
61
|
+
new_path = cls.ARTIFACTS_PATH / new_name
|
|
62
|
+
artifact.rename(new_path)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class WinipediaUtilsBuild(Build):
|
|
66
|
+
"""Build script for winipedia_utils."""
|
|
67
|
+
|
|
68
|
+
@classmethod
|
|
69
|
+
def get_artifacts(cls) -> list[Path]:
|
|
70
|
+
"""Build the project."""
|
|
71
|
+
paths = [cls.ARTIFACTS_PATH / "build.txt"]
|
|
72
|
+
for path in paths:
|
|
73
|
+
path.write_text("Hello World!")
|
|
74
|
+
return paths
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
if __name__ == "__main__":
|
|
78
|
+
WinipediaUtilsBuild()
|