python-msilib 0.5.0__tar.gz → 0.7.0__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.
- python_msilib-0.7.0/Makefile +61 -0
- {python_msilib-0.5.0/src/python_msilib.egg-info → python_msilib-0.7.0}/PKG-INFO +5 -10
- {python_msilib-0.5.0 → python_msilib-0.7.0}/README.md +2 -1
- {python_msilib-0.5.0 → python_msilib-0.7.0}/pyproject.toml +22 -67
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/__init__.py +271 -112
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/_msi.c +1 -1
- python_msilib-0.7.0/src/msilib/_msi.pyi +98 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/include/_msi.h +8 -1
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/include/pythoncapi_compat.h +54 -6
- python_msilib-0.7.0/src/msilib/py.typed +0 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/schema.py +111 -93
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/sequence.py +16 -7
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/text.py +10 -6
- {python_msilib-0.5.0 → python_msilib-0.7.0/src/python_msilib.egg-info}/PKG-INFO +5 -10
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/SOURCES.txt +2 -1
- {python_msilib-0.5.0 → python_msilib-0.7.0}/tests/test_msilib.py +66 -11
- python_msilib-0.5.0/Makefile +0 -83
- python_msilib-0.5.0/src/python_msilib.egg-info/requires.txt +0 -9
- {python_msilib-0.5.0 → python_msilib-0.7.0}/LICENSE +0 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/MANIFEST.in +0 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/setup.cfg +0 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/dependency_links.txt +0 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/not-zip-safe +0 -0
- {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Makefile to automate some tools
|
|
2
|
+
SHELL=/bin/bash
|
|
3
|
+
PATH := $(shell python -c "import sysconfig; print(sysconfig.get_path('scripts'))"):$(PATH)
|
|
4
|
+
|
|
5
|
+
PY_PLATFORM := $(shell python -c "import sysconfig; print(sysconfig.get_platform())")
|
|
6
|
+
PRE_COMMIT_OPTIONS := --show-diff-on-failure --color=always --all-files --hook-stage=manual --no-progress
|
|
7
|
+
|
|
8
|
+
COV_TMPDIR := $(shell mktemp -d)
|
|
9
|
+
|
|
10
|
+
.PHONY: all
|
|
11
|
+
all: install
|
|
12
|
+
|
|
13
|
+
.PHONY: prek
|
|
14
|
+
prek: install
|
|
15
|
+
@(prek run $(PRE_COMMIT_OPTIONS) || true)
|
|
16
|
+
@prek cache gc -q
|
|
17
|
+
|
|
18
|
+
.PHONY: clean
|
|
19
|
+
clean: uninstall
|
|
20
|
+
@rm -f .coverage* || true
|
|
21
|
+
@rm -rf build dist wheelhouse
|
|
22
|
+
@prek cache clean -q
|
|
23
|
+
|
|
24
|
+
.PHONY: install
|
|
25
|
+
install:
|
|
26
|
+
./ci/install-tools.sh --dev
|
|
27
|
+
if ! [ -f .git/hooks/pre-commit ]; then\
|
|
28
|
+
prek install --install-hooks --overwrite -t pre-commit;\
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
.PHONY: uninstall
|
|
32
|
+
uninstall:
|
|
33
|
+
@prek uninstall -q
|
|
34
|
+
@rm -f .git/hooks/pre-commit
|
|
35
|
+
|
|
36
|
+
.PHONY: update
|
|
37
|
+
update: install
|
|
38
|
+
prek update --freeze
|
|
39
|
+
$(MAKE) prek
|
|
40
|
+
|
|
41
|
+
.PHONY: wheel
|
|
42
|
+
wheel:
|
|
43
|
+
./ci/build-wheel.sh --install
|
|
44
|
+
|
|
45
|
+
.PHONY: tests
|
|
46
|
+
tests: wheel
|
|
47
|
+
./ci/install-tools.sh --tests
|
|
48
|
+
cp pyproject.toml $(COV_TMPDIR)/
|
|
49
|
+
cp -a tests/ $(COV_TMPDIR)/
|
|
50
|
+
cd $(COV_TMPDIR) && pytest -nauto -v || true
|
|
51
|
+
|
|
52
|
+
.PHONY: cov
|
|
53
|
+
cov: wheel
|
|
54
|
+
./ci/install-tools.sh --tests
|
|
55
|
+
@rm -rf build/coverage_html_report
|
|
56
|
+
cp pyproject.toml $(COV_TMPDIR)/
|
|
57
|
+
cp -a tests/ $(COV_TMPDIR)/
|
|
58
|
+
cd $(COV_TMPDIR) && coverage run || true
|
|
59
|
+
coverage combine --keep --quiet -a $(COV_TMPDIR)/
|
|
60
|
+
coverage report
|
|
61
|
+
coverage html --show-contexts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-msilib
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Read and write Microsoft Installer files
|
|
5
|
-
Author-email: Marcelo Duarte <marcelotduarte@users.noreply.github.com>, "
|
|
5
|
+
Author-email: Marcelo Duarte <marcelotduarte@users.noreply.github.com>, "Martin v. Löwis" <loewis@users.noreply.github.com>
|
|
6
6
|
License-Expression: PSF-2.0
|
|
7
7
|
Project-URL: Source, https://github.com/marcelotduarte/python-msilib
|
|
8
8
|
Project-URL: Changelog, https://github.com/marcelotduarte/python-msilib/releases
|
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
21
22
|
Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
|
|
22
23
|
Classifier: Topic :: Software Development :: Build Tools
|
|
23
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
@@ -26,13 +27,6 @@ Classifier: Topic :: Utilities
|
|
|
26
27
|
Requires-Python: >=3.13
|
|
27
28
|
Description-Content-Type: text/markdown
|
|
28
29
|
License-File: LICENSE
|
|
29
|
-
Provides-Extra: dev
|
|
30
|
-
Requires-Dist: bump-my-version==1.2.4; extra == "dev"
|
|
31
|
-
Requires-Dist: cibuildwheel==3.3.0; extra == "dev"
|
|
32
|
-
Requires-Dist: pre-commit==4.5.0; extra == "dev"
|
|
33
|
-
Provides-Extra: tests
|
|
34
|
-
Requires-Dist: coverage==7.12.0; extra == "tests"
|
|
35
|
-
Requires-Dist: pytest==9.0.2; extra == "tests"
|
|
36
30
|
Dynamic: license-file
|
|
37
31
|
|
|
38
32
|
# python-msilib
|
|
@@ -40,7 +34,7 @@ Dynamic: license-file
|
|
|
40
34
|
Read and write Microsoft Installer files.
|
|
41
35
|
|
|
42
36
|
This library is legacy code borrowed from Python 3.12, intended to allow
|
|
43
|
-
cx_Freeze's `bdist_msi` command to continue working in Python 3.13
|
|
37
|
+
cx_Freeze's `bdist_msi` command to continue working in Python 3.13+.
|
|
44
38
|
|
|
45
39
|
[](https://pypi.org/project/python-msilib/)
|
|
46
40
|
[](https://pypistats.org/packages/python-msilib)
|
|
@@ -49,6 +43,7 @@ cx_Freeze's `bdist_msi` command to continue working in Python 3.13 and 3.14.
|
|
|
49
43
|
[](https://www.python.org/)
|
|
50
44
|
[](https://htmlpreview.github.io/?https://github.com/marcelotduarte/python-msilib/blob/python-coverage-comment-action-data/htmlcov/index.html)
|
|
51
45
|
[](https://github.com/astral-sh/ruff)
|
|
46
|
+
[](https://github.com/j178/prek)
|
|
52
47
|
|
|
53
48
|
## Installation
|
|
54
49
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Read and write Microsoft Installer files.
|
|
4
4
|
|
|
5
5
|
This library is legacy code borrowed from Python 3.12, intended to allow
|
|
6
|
-
cx_Freeze's `bdist_msi` command to continue working in Python 3.13
|
|
6
|
+
cx_Freeze's `bdist_msi` command to continue working in Python 3.13+.
|
|
7
7
|
|
|
8
8
|
[](https://pypi.org/project/python-msilib/)
|
|
9
9
|
[](https://pypistats.org/packages/python-msilib)
|
|
@@ -12,6 +12,7 @@ cx_Freeze's `bdist_msi` command to continue working in Python 3.13 and 3.14.
|
|
|
12
12
|
[](https://www.python.org/)
|
|
13
13
|
[](https://htmlpreview.github.io/?https://github.com/marcelotduarte/python-msilib/blob/python-coverage-comment-action-data/htmlcov/index.html)
|
|
14
14
|
[](https://github.com/astral-sh/ruff)
|
|
15
|
+
[](https://github.com/j178/prek)
|
|
15
16
|
|
|
16
17
|
## Installation
|
|
17
18
|
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
|
-
|
|
4
|
-
# setuptools 78.1.1 fix path traversal vulnerability
|
|
5
|
-
"setuptools>=78.1.1,<=80.9.0",
|
|
3
|
+
"setuptools~=83.0",
|
|
6
4
|
]
|
|
7
5
|
build-backend = "setuptools.build_meta"
|
|
8
6
|
|
|
9
7
|
[project]
|
|
10
8
|
name = "python-msilib"
|
|
9
|
+
version = "0.7.0"
|
|
11
10
|
description = "Read and write Microsoft Installer files"
|
|
12
11
|
classifiers = [
|
|
13
12
|
"Development Status :: 5 - Production/Stable",
|
|
@@ -20,13 +19,13 @@ classifiers = [
|
|
|
20
19
|
"Programming Language :: Python :: 3 :: Only",
|
|
21
20
|
"Programming Language :: Python :: 3.13",
|
|
22
21
|
"Programming Language :: Python :: 3.14",
|
|
22
|
+
"Programming Language :: Python :: 3.15",
|
|
23
23
|
"Programming Language :: Python :: Free Threading :: 2 - Beta",
|
|
24
24
|
"Topic :: Software Development :: Build Tools",
|
|
25
25
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
26
26
|
"Topic :: System :: Software Distribution",
|
|
27
27
|
"Topic :: Utilities",
|
|
28
28
|
]
|
|
29
|
-
dynamic = ["version"]
|
|
30
29
|
keywords = ["msilib"]
|
|
31
30
|
license = "PSF-2.0"
|
|
32
31
|
license-files = ["LICENSE"]
|
|
@@ -38,33 +37,29 @@ name = "Marcelo Duarte"
|
|
|
38
37
|
email = "marcelotduarte@users.noreply.github.com"
|
|
39
38
|
|
|
40
39
|
[[project.authors]]
|
|
41
|
-
name = "
|
|
40
|
+
name = "Martin v. Löwis"
|
|
42
41
|
email = "loewis@users.noreply.github.com"
|
|
43
42
|
|
|
44
|
-
[project.optional-dependencies]
|
|
45
|
-
dev = [
|
|
46
|
-
"bump-my-version==1.2.4",
|
|
47
|
-
"cibuildwheel==3.3.0",
|
|
48
|
-
"pre-commit==4.5.0",
|
|
49
|
-
]
|
|
50
|
-
tests = [
|
|
51
|
-
"coverage==7.12.0",
|
|
52
|
-
"pytest==9.0.2",
|
|
53
|
-
]
|
|
54
|
-
|
|
55
43
|
[project.urls]
|
|
56
44
|
Source = "https://github.com/marcelotduarte/python-msilib"
|
|
57
45
|
Changelog = "https://github.com/marcelotduarte/python-msilib/releases"
|
|
58
46
|
Documentation = "https://docs.python.org/3.12/library/msilib.html"
|
|
59
47
|
|
|
48
|
+
[dependency-groups]
|
|
49
|
+
dev = [
|
|
50
|
+
"cibuildwheel>=4.2.0",
|
|
51
|
+
"prek>=0.4.12,<0.5.0",
|
|
52
|
+
]
|
|
53
|
+
tests = [
|
|
54
|
+
"coverage>=7.13.0",
|
|
55
|
+
"pytest>=9.0.3,<9.2.0",
|
|
56
|
+
]
|
|
57
|
+
|
|
60
58
|
[tool.setuptools]
|
|
61
59
|
include-package-data = true
|
|
62
60
|
package-dir = {"" = "src"}
|
|
63
61
|
zip-safe = false
|
|
64
62
|
|
|
65
|
-
[tool.setuptools.dynamic]
|
|
66
|
-
version = {attr = "msilib.__version__"}
|
|
67
|
-
|
|
68
63
|
[[tool.setuptools.ext-modules]]
|
|
69
64
|
name = "msilib._msi"
|
|
70
65
|
sources = ["src/msilib/_msi.c"]
|
|
@@ -78,44 +73,9 @@ libraries = ["msi","rpcrt4", "cabinet"]
|
|
|
78
73
|
namespaces = false
|
|
79
74
|
where = ["src"]
|
|
80
75
|
|
|
81
|
-
[tool.bumpversion]
|
|
82
|
-
commit = true
|
|
83
|
-
current_version = "0.5.0"
|
|
84
|
-
message = "Bump version: {current_version} → {new_version} [ci skip]"
|
|
85
|
-
parse = """(?x)
|
|
86
|
-
(?P<major>0|[1-9]\\d*)\\.
|
|
87
|
-
(?P<minor>0|[1-9]\\d*)\\.
|
|
88
|
-
(?P<patch>0|[1-9]\\d*)
|
|
89
|
-
(?:
|
|
90
|
-
\\.(?P<optional>0|[1-9]\\d*) # pull request number (optional)
|
|
91
|
-
)?
|
|
92
|
-
(?:
|
|
93
|
-
- # dash separator for pre-release section
|
|
94
|
-
(?P<pre>[a-zA-Z-]+)\\. # pre-release label
|
|
95
|
-
(?P<build>0|[1-9]\\d*) # pre-release version number
|
|
96
|
-
)? # pre-release section is optional
|
|
97
|
-
"""
|
|
98
|
-
serialize = [
|
|
99
|
-
"{major}.{minor}.{patch}.{optional}-{pre}.{build}",
|
|
100
|
-
"{major}.{minor}.{patch}-{pre}.{build}",
|
|
101
|
-
"{major}.{minor}.{patch}"
|
|
102
|
-
]
|
|
103
|
-
sign_tags = true
|
|
104
|
-
tag = true
|
|
105
|
-
tag_name = "{new_version}"
|
|
106
|
-
verbose = true
|
|
107
|
-
|
|
108
|
-
[[tool.bumpversion.files]]
|
|
109
|
-
filename = "src/msilib/__init__.py"
|
|
110
|
-
|
|
111
|
-
[tool.bumpversion.parts.pre]
|
|
112
|
-
values = ["dev", "final"]
|
|
113
|
-
optional_value = "final"
|
|
114
|
-
|
|
115
76
|
[tool.cibuildwheel]
|
|
116
77
|
build-frontend = "build[uv]"
|
|
117
78
|
build-verbosity = 1
|
|
118
|
-
enable = ["cpython-freethreading"]
|
|
119
79
|
|
|
120
80
|
[tool.coverage.html]
|
|
121
81
|
directory = "build/coverage_html_report"
|
|
@@ -164,7 +124,10 @@ line-length = 79
|
|
|
164
124
|
[tool.ruff.lint]
|
|
165
125
|
select = [
|
|
166
126
|
"A", # flake8-builtins
|
|
167
|
-
"
|
|
127
|
+
"ANN001", # flake8-annotations - missing-type-function-argument
|
|
128
|
+
"ANN002", # flake8-annotations - missing-type-args
|
|
129
|
+
"ANN201", # flake8-annotations - missing-return-type-undocumented-public-function
|
|
130
|
+
"ANN202", # flake8-annotations - missing-return-type-private-function
|
|
168
131
|
"ARG", # flake8-unused-arguments
|
|
169
132
|
"B", # flake8-bugbear
|
|
170
133
|
"BLE", # flake8-blind-except
|
|
@@ -210,27 +173,20 @@ ignore = [
|
|
|
210
173
|
"D107", # Missing docstring in `__init__`
|
|
211
174
|
"D203", # conflict with D211
|
|
212
175
|
"D213", # conflict with D212
|
|
213
|
-
#
|
|
176
|
+
"PLR0913", # too-many-arguments
|
|
177
|
+
"PLR0917", # too-many-positional-arguments
|
|
178
|
+
# should be revised in future - last revised using ruff 0.16.0
|
|
214
179
|
"D101", # Missing docstring in public class
|
|
215
180
|
"D102", # Missing docstring in public method
|
|
216
181
|
"D103", # Missing docstring in public function
|
|
217
|
-
"D205", # 1 blank line required between summary line and description
|
|
218
182
|
"PLR2004", # Magic value used in comparison, consider replacing
|
|
219
|
-
"PLR0912", # too-many-branches
|
|
220
|
-
"PLR0913", # too-many-arguments
|
|
221
|
-
"PLR0915", # too-many-statements
|
|
222
|
-
# prone to false positives (https://github.com/astral-sh/ruff/issues/4045)
|
|
223
|
-
"S603",
|
|
224
183
|
]
|
|
225
184
|
|
|
226
185
|
[tool.ruff.lint.per-file-ignores]
|
|
227
186
|
"src/msilib/__init__.py" = [
|
|
228
|
-
"S101", # Use of `assert` detected
|
|
229
|
-
"S608",
|
|
230
187
|
"A002",
|
|
231
|
-
"ANN201",
|
|
232
188
|
"ERA001",
|
|
233
|
-
"
|
|
189
|
+
"S101", # Use of `assert` detected
|
|
234
190
|
]
|
|
235
191
|
"src/msilib/schema.py" = [
|
|
236
192
|
"E501", # Line too long
|
|
@@ -240,7 +196,6 @@ ignore = [
|
|
|
240
196
|
]
|
|
241
197
|
"tests/*" = [
|
|
242
198
|
"S101", # Use of `assert` detected
|
|
243
|
-
"ANN201",
|
|
244
199
|
]
|
|
245
200
|
|
|
246
201
|
[tool.ruff.lint.flake8-builtins]
|