portable-python 2.0.0__py3-none-any.whl → 2.0.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.
@@ -10,6 +10,7 @@ class GettextTiny(ModuleBuilder):
10
10
 
11
11
  @property
12
12
  def version(self):
13
+ # Check https://github.com/sabotage-linux/gettext-tiny/releases
13
14
  return self.cfg_version("0.3.2")
14
15
 
15
16
  def _do_linux_compile(self):
@@ -26,6 +26,8 @@ class Bdb(ModuleBuilder):
26
26
 
27
27
  @property
28
28
  def version(self):
29
+ # Oracle stopped releasing new versions in May 2020 (18.1.40 was last under AGPL)
30
+ # Check https://www.oracle.com/database/technologies/related/berkeleydb-downloads.html
29
31
  return self.cfg_version("6.2.32")
30
32
 
31
33
  def c_configure_args(self):
@@ -61,6 +63,8 @@ class Bzip2(ModuleBuilder):
61
63
 
62
64
  @property
63
65
  def version(self):
66
+ # Last release was 1.0.8 in 2019, project has very infrequent updates
67
+ # Check https://sourceware.org/bzip2/downloads.html
64
68
  return self.cfg_version("1.0.8")
65
69
 
66
70
  def _do_linux_compile(self):
@@ -85,6 +89,7 @@ class Gdbm(ModuleBuilder):
85
89
 
86
90
  @property
87
91
  def version(self):
92
+ # Check https://www.gnu.org.ua/software/gdbm/
88
93
  return self.cfg_version("1.26")
89
94
 
90
95
  def c_configure_args(self):
@@ -131,6 +136,7 @@ class LibFFI(ModuleBuilder):
131
136
 
132
137
  @property
133
138
  def version(self):
139
+ # Check https://github.com/libffi/libffi/releases
134
140
  return self.cfg_version("3.5.2")
135
141
 
136
142
  def c_configure_args(self):
@@ -176,9 +182,10 @@ class Openssl(ModuleBuilder):
176
182
 
177
183
  @property
178
184
  def version(self):
179
- # See https://endoflife.date/openssl
180
- # This default here picks the most conservative longest supported version
181
- return self.cfg_version("3.0.17")
185
+ # 3.5 is LTS, supported until Apr 2030 (3.0 EOL Sept 2026)
186
+ # Stay on the 3.5 LTS line for now: 3.6 / 4.0 not yet verified for cpython builds
187
+ # Check https://github.com/openssl/openssl/releases and https://endoflife.date/openssl
188
+ return self.cfg_version("3.5.7")
182
189
 
183
190
  def c_configure_args(self):
184
191
  if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
@@ -207,7 +214,8 @@ class Ncurses(ModuleBuilder):
207
214
 
208
215
  @property
209
216
  def version(self):
210
- return self.cfg_version("6.5")
217
+ # Check https://invisible-island.net/ncurses/announce.html
218
+ return self.cfg_version("6.6")
211
219
 
212
220
  def c_configure_args(self):
213
221
  if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
@@ -264,7 +272,9 @@ class Readline(ModuleBuilder):
264
272
 
265
273
  @property
266
274
  def version(self):
267
- return self.cfg_version("8.2.13")
275
+ # Patched tarballs (e.g. "8.2.13") are available on the GNU FTP when patches accumulate
276
+ # Check https://ftpmirror.gnu.org/gnu/readline/ for available tarballs
277
+ return self.cfg_version("8.3")
268
278
 
269
279
  def c_configure_args(self):
270
280
  if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
@@ -308,7 +318,8 @@ class Sqlite(ModuleBuilder):
308
318
 
309
319
  @property
310
320
  def version(self):
311
- return self.cfg_version("3.50.4")
321
+ # Keep current; check https://sqlite.org/changes.html (avoid withdrawn releases like 3.52.0)
322
+ return self.cfg_version("3.53.2")
312
323
 
313
324
  def c_configure_args(self):
314
325
  if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
@@ -343,6 +354,8 @@ class Uuid(ModuleBuilder):
343
354
 
344
355
  @property
345
356
  def version(self):
357
+ # Standalone libuuid (not util-linux), project is mostly dormant
358
+ # Check https://sourceforge.net/projects/libuuid/files/
346
359
  return self.cfg_version("1.0.3")
347
360
 
348
361
  def c_configure_args(self):
@@ -373,7 +386,8 @@ class Xz(ModuleBuilder):
373
386
 
374
387
  @property
375
388
  def version(self):
376
- return self.cfg_version("5.8.1")
389
+ # Check https://github.com/tukaani-project/xz/releases
390
+ return self.cfg_version("5.8.3")
377
391
 
378
392
  def c_configure_args(self):
379
393
  if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
@@ -416,7 +430,8 @@ class Zlib(ModuleBuilder):
416
430
 
417
431
  @property
418
432
  def version(self):
419
- return self.cfg_version("1.3.1")
433
+ # Check https://zlib.net/ and https://github.com/madler/zlib/releases
434
+ return self.cfg_version("1.3.2")
420
435
 
421
436
  def c_configure_args(self):
422
437
  if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
@@ -456,6 +471,7 @@ class Zstd(ModuleBuilder):
456
471
 
457
472
  @property
458
473
  def version(self):
474
+ # Check https://github.com/facebook/zstd/releases
459
475
  return self.cfg_version("1.5.7")
460
476
 
461
477
  def _do_linux_compile(self):
@@ -490,6 +506,7 @@ class Mpdec(ModuleBuilder):
490
506
 
491
507
  @property
492
508
  def version(self):
509
+ # Check https://www.bytereef.org/mpdecimal/download.html
493
510
  return self.cfg_version("4.0.1")
494
511
 
495
512
  def c_configure_args(self):
@@ -77,6 +77,8 @@ class Tix(ModuleBuilder):
77
77
 
78
78
  @property
79
79
  def version(self):
80
+ # Effectively dead project, no updates expected
81
+ # Check https://github.com/python/cpython-source-deps (tix-* tags)
80
82
  return self.cfg_version("8.4.3.6")
81
83
 
82
84
  # noinspection PyPep8Naming
@@ -116,4 +118,7 @@ class TkInter(ModuleBuilder):
116
118
 
117
119
  @property
118
120
  def version(self):
119
- return self.cfg_version("8.6.15")
121
+ # This is the Tcl/Tk version used by Tcl, Tk, and Tix sub-modules
122
+ # Staying on 8.6.x branch (9.0+ is a major rewrite)
123
+ # Check https://www.tcl-lang.org/software/tcltk/8.6.html
124
+ return self.cfg_version("8.6.18")
@@ -1,13 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: portable-python
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: Portable python binaries
5
- Home-page: https://github.com/codrsquad/portable-python
6
- Author: Zoran Simic
7
- Author-email: zoran@simicweb.com
8
- License: MIT
9
- Project-URL: Documentation, https://github.com/codrsquad/portable-python/wiki
10
- Project-URL: Release notes, https://github.com/codrsquad/portable-python/wiki/Release-notes
5
+ Author-email: Zoran Simic <zoran@simicweb.com>
6
+ License-Expression: MIT
11
7
  Project-URL: Source, https://github.com/codrsquad/portable-python
12
8
  Keywords: python,portable,binary
13
9
  Classifier: Development Status :: 5 - Production/Stable
@@ -31,24 +27,12 @@ Classifier: Topic :: Utilities
31
27
  Requires-Python: >=3.10
32
28
  Description-Content-Type: text/x-rst
33
29
  License-File: LICENSE
34
- Requires-Dist: click~=8.0
35
- Requires-Dist: pyyaml~=6.0
36
- Requires-Dist: requests<3.0
37
- Requires-Dist: runez~=5.5
38
- Requires-Dist: urllib3~=1.26
39
- Dynamic: author
40
- Dynamic: author-email
41
- Dynamic: classifier
42
- Dynamic: description
43
- Dynamic: description-content-type
44
- Dynamic: home-page
45
- Dynamic: keywords
46
- Dynamic: license
30
+ Requires-Dist: click<9
31
+ Requires-Dist: pyyaml<7
32
+ Requires-Dist: requests<3
33
+ Requires-Dist: runez<6
34
+ Requires-Dist: urllib3<3
47
35
  Dynamic: license-file
48
- Dynamic: project-url
49
- Dynamic: requires-dist
50
- Dynamic: requires-python
51
- Dynamic: summary
52
36
 
53
37
  Portable python binaries
54
38
  ========================
@@ -61,8 +45,8 @@ Portable python binaries
61
45
  :target: https://github.com/codrsquad/portable-python/actions
62
46
  :alt: Tested with Github Actions
63
47
 
64
- .. image:: https://codecov.io/gh/codrsquad/portable-python/branch/main/graph/badge.svg
65
- :target: https://codecov.io/gh/codrsquad/portable-python
48
+ .. image:: https://coveralls.io/repos/github/codrsquad/portable-python/badge.svg?branch=main
49
+ :target: https://coveralls.io/github/codrsquad/portable-python?branch=main
66
50
  :alt: Test coverage
67
51
 
68
52
  .. image:: https://img.shields.io/pypi/pyversions/portable-python.svg
@@ -180,6 +164,64 @@ Note that you can use ``--dryrun`` mode to inspect what would be done without do
180
164
  Would tar build/3.9.7 -> dist/cpython-3.9.7-macos-x86_64.tar.gz
181
165
 
182
166
 
167
+ CLI reference
168
+ -------------
169
+
170
+ Main entry point::
171
+
172
+ portable-python [OPTIONS] COMMAND [ARGS]
173
+
174
+ **Global options**:
175
+
176
+ - ``--config PATH``: Config file (default: ``portable-python.yml``)
177
+ - ``--quiet``: Turn off DEBUG logging
178
+ - ``--dryrun`` / ``-n``: Show what would be done
179
+ - ``--target PLATFORM``: Override detected platform (for testing)
180
+
181
+
182
+ **build** ``<PYTHON_SPEC>`` - Build a portable Python binary::
183
+
184
+ portable-python build 3.13.2 -m openssl,zlib
185
+
186
+ - ``--modules, -m CSV``: External modules to include
187
+ - ``--prefix, -p PATH``: Use ``--prefix`` (non-portable)
188
+
189
+
190
+ **build-report** ``[PYTHON_SPEC]`` - Show module status and what will be compiled:
191
+
192
+ - ``--modules, -m CSV``: Specific modules to check
193
+ - Validates that modules can be built
194
+
195
+
196
+ **inspect** ``<PATH>`` - Check if a Python installation is portable::
197
+
198
+ portable-python inspect /usr/bin/python3
199
+
200
+ - ``--modules, -m MODULES``: Which modules to inspect
201
+ - ``--verbose, -v``: Show full ``.so`` report
202
+ - ``--prefix, -p``: Built with ``--prefix`` (not portable)
203
+ - ``--skip-so, -s``: Don't check all ``.so`` files
204
+
205
+
206
+ **list** ``[FAMILY]`` - List available versions (default: cpython)::
207
+
208
+ portable-python list cpython
209
+
210
+ - ``--json``: Output as JSON
211
+
212
+
213
+ **diagnostics** - Show system diagnostics
214
+
215
+
216
+ **recompress** ``<PATH> <EXT>`` - Re-compress existing binary tarball (for comparing compression sizes)
217
+
218
+
219
+ **lib-auto-correct** ``<PATH>`` - Auto-correct exes/libs to use relative paths:
220
+
221
+ - ``--commit``: Actually perform changes (dryrun by default)
222
+ - ``--prefix, -p PATH``: Expected ``--prefix`` from build
223
+
224
+
183
225
  Library
184
226
  -------
185
227
 
@@ -6,13 +6,15 @@ portable_python/cpython.py,sha256=V0_B2nWv0H8enXGdU38yRgZyO7d-JkC0DWlTMsI9K9M,18
6
6
  portable_python/inspector.py,sha256=LvGhat2rqwgse0r90dZxEExRYWSW4TrxsMXxYScrF3k,21355
7
7
  portable_python/tracking.py,sha256=308K--adSivstOqnD9oczlY77FZV_cgNy7xL8BS9ROg,1978
8
8
  portable_python/versions.py,sha256=BTxYrH6xGFQIXZ8Xv8rHMpVT76TKmE_J7AXOepCE5Tc,7171
9
- portable_python/external/__init__.py,sha256=3KgdTIZG1x-Sm0nPMKl4c3elCtBy6spD6qASpvdR8ZI,729
9
+ portable_python/external/__init__.py,sha256=jQCp0sEgj7ZjuWYc2zJ3Bm_W5qdT0OPNAe4JIPaQLY8,801
10
10
  portable_python/external/_inspect.py,sha256=ASminI7HBuHAuFcvX3mkBYf7lCDILqiPrKkhKkQ8w94,3744
11
- portable_python/external/xcpython.py,sha256=U-uJFksl1LZyt72YtWiaItV5artpa76lLhYNhcGKQR8,15444
12
- portable_python/external/xtkinter.py,sha256=KlhFUvIXWy7gX6FrZBieekrULx4kF12H2Q010GZEj20,3502
13
- portable_python-2.0.0.dist-info/licenses/LICENSE,sha256=BB27gUWIcmc-bauY_M6COCMtiy4hN2mou1RdadlbXbs,1068
14
- portable_python-2.0.0.dist-info/METADATA,sha256=8Ht3qB2ALIHuRJLxeGdGM3XOpjmwXabOBxcjzeJy90k,8759
15
- portable_python-2.0.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
16
- portable_python-2.0.0.dist-info/entry_points.txt,sha256=Zo8HR39evgAgm4e2UhenD7kkpJvEXp_VB4aIrL_3_VY,66
17
- portable_python-2.0.0.dist-info/top_level.txt,sha256=S203pfaAC8FDZvrHsCWWua_9ZfSDEDCD1w90zzYFhOU,16
18
- portable_python-2.0.0.dist-info/RECORD,,
11
+ portable_python/external/xcpython.py,sha256=AnelZlU5_Z08dp0Itej3AZ9KLcIE07Fidlrp3WWs87k,16744
12
+ portable_python/external/xtkinter.py,sha256=rvIHeaUmp2O7fJeYxu4FH2tzFA8Ajw55Nhqg2yFOt8I,3832
13
+ portable_python-2.0.1.dist-info/licenses/LICENSE,sha256=BB27gUWIcmc-bauY_M6COCMtiy4hN2mou1RdadlbXbs,1068
14
+ portable_python-2.0.1.dist-info/METADATA,sha256=KXL6TT3WrqOGEcmfrOcaGOOQXENK8PXve4UBPIaUOJ4,9850
15
+ portable_python-2.0.1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
16
+ portable_python-2.0.1.dist-info/entry_points.txt,sha256=Zo8HR39evgAgm4e2UhenD7kkpJvEXp_VB4aIrL_3_VY,66
17
+ portable_python-2.0.1.dist-info/scm_file_list.json,sha256=JEWL2bgKhM5MfDey6Ck0z28f5QpCpC_rsqh4pXnOQHo,2862
18
+ portable_python-2.0.1.dist-info/scm_version.json,sha256=NLVXUR8TKaY95dqXtJYGWJutY6pngwPq1sEo-b8In2Y,160
19
+ portable_python-2.0.1.dist-info/top_level.txt,sha256=S203pfaAC8FDZvrHsCWWua_9ZfSDEDCD1w90zzYFhOU,16
20
+ portable_python-2.0.1.dist-info/RECORD,,
@@ -0,0 +1,93 @@
1
+ {
2
+ "files": [
3
+ "tox.ini",
4
+ "Dockerfile",
5
+ "LICENSE",
6
+ "pyproject.toml",
7
+ "lock-deps.sh",
8
+ "requirements.txt",
9
+ "portable-python.yml",
10
+ "SECURITY.md",
11
+ "README.rst",
12
+ ".dockerignore",
13
+ "CLAUDE.md",
14
+ "MANIFEST.in",
15
+ ".gitignore",
16
+ "scripts/portable-python.sh",
17
+ "scripts/bashrc.sh",
18
+ "scripts/check_okf.py",
19
+ "docs/overview.md",
20
+ "docs/log.md",
21
+ "docs/changelog.md",
22
+ "docs/release.md",
23
+ "docs/index.md",
24
+ "docs/configuration/portable-python-yml.md",
25
+ "docs/configuration/index.md",
26
+ "docs/architecture/cpython.md",
27
+ "docs/architecture/config.md",
28
+ "docs/architecture/python-builder.md",
29
+ "docs/architecture/ppg.md",
30
+ "docs/architecture/build-setup.md",
31
+ "docs/architecture/python-inspector.md",
32
+ "docs/architecture/module-builder.md",
33
+ "docs/architecture/index.md",
34
+ "docs/modules/external-modules.md",
35
+ "docs/modules/index.md",
36
+ "docs/guides/bump-python-support.md",
37
+ "docs/guides/local-development.md",
38
+ "docs/guides/ci-cd.md",
39
+ "docs/guides/fix-a-portability-issue.md",
40
+ "docs/guides/add-an-external-module.md",
41
+ "docs/guides/bump-components.md",
42
+ "docs/guides/index.md",
43
+ "docs/guides/add-a-config-option.md",
44
+ "docs/guides/build-a-portable-python.md",
45
+ "docs/concepts/ppp-marker.md",
46
+ "docs/concepts/folder-masking.md",
47
+ "docs/concepts/build-layout.md",
48
+ "docs/concepts/portability.md",
49
+ "docs/concepts/telltale-detection.md",
50
+ "docs/concepts/index.md",
51
+ "docs/concepts/static-linking.md",
52
+ "docs/cli/lib-auto-correct.md",
53
+ "docs/cli/diagnostics.md",
54
+ "docs/cli/inspect.md",
55
+ "docs/cli/list.md",
56
+ "docs/cli/recompress.md",
57
+ "docs/cli/build.md",
58
+ "docs/cli/index.md",
59
+ "docs/cli/build-report.md",
60
+ "src/portable_python/__init__.py",
61
+ "src/portable_python/versions.py",
62
+ "src/portable_python/config.py",
63
+ "src/portable_python/cpython.py",
64
+ "src/portable_python/inspector.py",
65
+ "src/portable_python/tracking.py",
66
+ "src/portable_python/cli.py",
67
+ "src/portable_python/__main__.py",
68
+ "src/portable_python/external/__init__.py",
69
+ "src/portable_python/external/xtkinter.py",
70
+ "src/portable_python/external/xcpython.py",
71
+ "src/portable_python/external/_inspect.py",
72
+ "retired/README.md",
73
+ "retired/toolchain.py",
74
+ ".claude/settings.json",
75
+ "tests/test_failed.py",
76
+ "tests/__init__.py",
77
+ "tests/sample-config2.yml",
78
+ "tests/test_prefix.py",
79
+ "tests/test_cleanup.py",
80
+ "tests/test_build.py",
81
+ "tests/test_recompress.py",
82
+ "tests/test_setup.py",
83
+ "tests/sample-config1.yml",
84
+ "tests/test_invoker.py",
85
+ "tests/test_report.py",
86
+ "tests/conftest.py",
87
+ "tests/test_list.py",
88
+ "tests/sample-incomplete.yml",
89
+ "tests/test_inspector.py",
90
+ ".github/workflows/release.yml",
91
+ ".github/workflows/tests.yml"
92
+ ]
93
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.0.1",
3
+ "distance": 0,
4
+ "node": "g2543c9f61b50974c844452484758fafeb52551a9",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-06-24"
8
+ }