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.
Files changed (24) hide show
  1. python_msilib-0.7.0/Makefile +61 -0
  2. {python_msilib-0.5.0/src/python_msilib.egg-info → python_msilib-0.7.0}/PKG-INFO +5 -10
  3. {python_msilib-0.5.0 → python_msilib-0.7.0}/README.md +2 -1
  4. {python_msilib-0.5.0 → python_msilib-0.7.0}/pyproject.toml +22 -67
  5. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/__init__.py +271 -112
  6. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/_msi.c +1 -1
  7. python_msilib-0.7.0/src/msilib/_msi.pyi +98 -0
  8. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/include/_msi.h +8 -1
  9. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/include/pythoncapi_compat.h +54 -6
  10. python_msilib-0.7.0/src/msilib/py.typed +0 -0
  11. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/schema.py +111 -93
  12. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/sequence.py +16 -7
  13. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/msilib/text.py +10 -6
  14. {python_msilib-0.5.0 → python_msilib-0.7.0/src/python_msilib.egg-info}/PKG-INFO +5 -10
  15. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/SOURCES.txt +2 -1
  16. {python_msilib-0.5.0 → python_msilib-0.7.0}/tests/test_msilib.py +66 -11
  17. python_msilib-0.5.0/Makefile +0 -83
  18. python_msilib-0.5.0/src/python_msilib.egg-info/requires.txt +0 -9
  19. {python_msilib-0.5.0 → python_msilib-0.7.0}/LICENSE +0 -0
  20. {python_msilib-0.5.0 → python_msilib-0.7.0}/MANIFEST.in +0 -0
  21. {python_msilib-0.5.0 → python_msilib-0.7.0}/setup.cfg +0 -0
  22. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/dependency_links.txt +0 -0
  23. {python_msilib-0.5.0 → python_msilib-0.7.0}/src/python_msilib.egg-info/not-zip-safe +0 -0
  24. {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.5.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>, " Martin v. Löwis" <loewis@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 and 3.14.
37
+ cx_Freeze's `bdist_msi` command to continue working in Python 3.13+.
44
38
 
45
39
  [![PyPI version](https://img.shields.io/pypi/v/python-msilib)](https://pypi.org/project/python-msilib/)
46
40
  [![PyPi Downloads](https://img.shields.io/pypi/dm/python-msilib)](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
  [![Python](https://img.shields.io/pypi/pyversions/python-msilib)](https://www.python.org/)
50
44
  [![Coverage](https://raw.githubusercontent.com/marcelotduarte/python-msilib/python-coverage-comment-action-data/badge.svg)](https://htmlpreview.github.io/?https://github.com/marcelotduarte/python-msilib/blob/python-coverage-comment-action-data/htmlcov/index.html)
51
45
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
46
+ [![prek](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json)](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 and 3.14.
6
+ cx_Freeze's `bdist_msi` command to continue working in Python 3.13+.
7
7
 
8
8
  [![PyPI version](https://img.shields.io/pypi/v/python-msilib)](https://pypi.org/project/python-msilib/)
9
9
  [![PyPi Downloads](https://img.shields.io/pypi/dm/python-msilib)](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
  [![Python](https://img.shields.io/pypi/pyversions/python-msilib)](https://www.python.org/)
13
13
  [![Coverage](https://raw.githubusercontent.com/marcelotduarte/python-msilib/python-coverage-comment-action-data/badge.svg)](https://htmlpreview.github.io/?https://github.com/marcelotduarte/python-msilib/blob/python-coverage-comment-action-data/htmlcov/index.html)
14
14
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
15
+ [![prek](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json)](https://github.com/j178/prek)
15
16
 
16
17
  ## Installation
17
18
 
@@ -1,13 +1,12 @@
1
1
  [build-system]
2
2
  requires = [
3
- # setuptools 77.0.3+ supports PEP 639
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 = " Martin v. Löwis"
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
- "ANN2", # flake8-annotations - missing return type
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
- # should be revised in future - last revised using ruff 0.14.2
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
- "PLW0603", # global
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]