pystand 2.22__tar.gz → 2.23__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.
- {pystand-2.22/pystand.egg-info → pystand-2.23}/PKG-INFO +27 -13
- {pystand-2.22 → pystand-2.23}/README.md +26 -12
- {pystand-2.22 → pystand-2.23/pystand.egg-info}/PKG-INFO +27 -13
- {pystand-2.22 → pystand-2.23}/pystand.py +47 -7
- {pystand-2.22 → pystand-2.23}/.gitignore +0 -0
- {pystand-2.22 → pystand-2.23}/justfile +0 -0
- {pystand-2.22 → pystand-2.23}/pyproject.toml +0 -0
- {pystand-2.22 → pystand-2.23}/pystand.egg-info/SOURCES.txt +0 -0
- {pystand-2.22 → pystand-2.23}/pystand.egg-info/dependency_links.txt +0 -0
- {pystand-2.22 → pystand-2.23}/pystand.egg-info/entry_points.txt +0 -0
- {pystand-2.22 → pystand-2.23}/pystand.egg-info/requires.txt +0 -0
- {pystand-2.22 → pystand-2.23}/pystand.egg-info/top_level.txt +0 -0
- {pystand-2.22 → pystand-2.23}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pystand
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.23
|
|
4
4
|
Summary: Install Python versions from python-build-standalone project
|
|
5
5
|
Author-email: Mark Blakeney <mark.blakeney@bullet-systems.net>
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -27,14 +27,14 @@ installation, and update of pre-built Python versions from the
|
|
|
27
27
|
[`python-build-standalone`][pbs] project. The following commands are
|
|
28
28
|
provided:
|
|
29
29
|
|
|
30
|
-
|Command
|
|
31
|
-
|---------|--------------------------------------------------------------------|
|
|
32
|
-
|`install`|Install one or
|
|
33
|
-
|`update` (or `upgrade`)
|
|
34
|
-
|`remove` (or `uninstall`)
|
|
35
|
-
|`list
|
|
36
|
-
|`show
|
|
37
|
-
|`path
|
|
30
|
+
|Command|Description|
|
|
31
|
+
|---------|--------------------------------------------------------------------|
|
|
32
|
+
|`install`|Install one, more, or all versions from a python-build-standalone release.|
|
|
33
|
+
|`update` (or `upgrade`)|Update one, more, or all versions to another release.|
|
|
34
|
+
|`remove` (or `uninstall`)|Remove/uninstall one, more, or all versions.|
|
|
35
|
+
|`list`|List installed versions and show which have an update available.|
|
|
36
|
+
|`show`|Show versions available from a release.|
|
|
37
|
+
|`path`|Show path prefix to installed version base directory.|
|
|
38
38
|
|
|
39
39
|
By default, Python versions are sourced from the latest
|
|
40
40
|
`python-build-standalone` [release][pbs-rel] available (e.g.
|
|
@@ -89,6 +89,14 @@ Version 3.10.14 @ 20240415 removed.
|
|
|
89
89
|
|
|
90
90
|
$ pystand list
|
|
91
91
|
3.12.3 @ 20240415 distribution="x86_64-unknown-linux-gnu-install_only_stripped"
|
|
92
|
+
|
|
93
|
+
# Install all available versions from latest release:
|
|
94
|
+
$ pystand install -a
|
|
95
|
+
Version 3.8.19 @ 20240415 installed.
|
|
96
|
+
Version 3.9.19 @ 20240415 installed.
|
|
97
|
+
Version 3.10.14 @ 20240415 installed.
|
|
98
|
+
Version 3.11.9 @ 20240415 installed.
|
|
99
|
+
Version 3.12.3 is already installed.
|
|
92
100
|
```
|
|
93
101
|
|
|
94
102
|
Here are some examples showing how to use an installed version ..
|
|
@@ -175,8 +183,8 @@ options:
|
|
|
175
183
|
|
|
176
184
|
Commands:
|
|
177
185
|
{install,update,upgrade,remove,uninstall,list,show,path,cache}
|
|
178
|
-
install Install one or
|
|
179
|
-
standalone release.
|
|
186
|
+
install Install one, more, or all versions from a python-
|
|
187
|
+
build-standalone release.
|
|
180
188
|
update (upgrade) Update one, more, or all versions to another release.
|
|
181
189
|
remove (uninstall) Remove/uninstall one, more, or all versions.
|
|
182
190
|
list List installed versions and show which have an update
|
|
@@ -195,9 +203,10 @@ individual command:
|
|
|
195
203
|
### Command `install`
|
|
196
204
|
|
|
197
205
|
```
|
|
198
|
-
usage: pystand install [-h] [-r RELEASE] [-
|
|
206
|
+
usage: pystand install [-h] [-r RELEASE] [-a] [-A] [--skip] [-f] [-s]
|
|
207
|
+
[version ...]
|
|
199
208
|
|
|
200
|
-
Install one or
|
|
209
|
+
Install one, more, or all versions from a python-build-standalone release.
|
|
201
210
|
|
|
202
211
|
positional arguments:
|
|
203
212
|
version version to install. E.g. 3.12 or 3.12.3
|
|
@@ -208,6 +217,11 @@ options:
|
|
|
208
217
|
install from specified python-build-standalone
|
|
209
218
|
YYYYMMDD release (e.g. 20240415), default is latest
|
|
210
219
|
release
|
|
220
|
+
-a, --all install ALL versions from release
|
|
221
|
+
-A, --all-prerelease install ALL versions from release, including pre-
|
|
222
|
+
releases
|
|
223
|
+
--skip skip the specified versions when installing all (only
|
|
224
|
+
can be specified with --all)
|
|
211
225
|
-f, --force force install even if already installed
|
|
212
226
|
-s, --include-source also install source files if available in distribution
|
|
213
227
|
download
|
|
@@ -7,14 +7,14 @@ installation, and update of pre-built Python versions from the
|
|
|
7
7
|
[`python-build-standalone`][pbs] project. The following commands are
|
|
8
8
|
provided:
|
|
9
9
|
|
|
10
|
-
|Command
|
|
11
|
-
|---------|--------------------------------------------------------------------|
|
|
12
|
-
|`install`|Install one or
|
|
13
|
-
|`update` (or `upgrade`)
|
|
14
|
-
|`remove` (or `uninstall`)
|
|
15
|
-
|`list
|
|
16
|
-
|`show
|
|
17
|
-
|`path
|
|
10
|
+
|Command|Description|
|
|
11
|
+
|---------|--------------------------------------------------------------------|
|
|
12
|
+
|`install`|Install one, more, or all versions from a python-build-standalone release.|
|
|
13
|
+
|`update` (or `upgrade`)|Update one, more, or all versions to another release.|
|
|
14
|
+
|`remove` (or `uninstall`)|Remove/uninstall one, more, or all versions.|
|
|
15
|
+
|`list`|List installed versions and show which have an update available.|
|
|
16
|
+
|`show`|Show versions available from a release.|
|
|
17
|
+
|`path`|Show path prefix to installed version base directory.|
|
|
18
18
|
|
|
19
19
|
By default, Python versions are sourced from the latest
|
|
20
20
|
`python-build-standalone` [release][pbs-rel] available (e.g.
|
|
@@ -69,6 +69,14 @@ Version 3.10.14 @ 20240415 removed.
|
|
|
69
69
|
|
|
70
70
|
$ pystand list
|
|
71
71
|
3.12.3 @ 20240415 distribution="x86_64-unknown-linux-gnu-install_only_stripped"
|
|
72
|
+
|
|
73
|
+
# Install all available versions from latest release:
|
|
74
|
+
$ pystand install -a
|
|
75
|
+
Version 3.8.19 @ 20240415 installed.
|
|
76
|
+
Version 3.9.19 @ 20240415 installed.
|
|
77
|
+
Version 3.10.14 @ 20240415 installed.
|
|
78
|
+
Version 3.11.9 @ 20240415 installed.
|
|
79
|
+
Version 3.12.3 is already installed.
|
|
72
80
|
```
|
|
73
81
|
|
|
74
82
|
Here are some examples showing how to use an installed version ..
|
|
@@ -155,8 +163,8 @@ options:
|
|
|
155
163
|
|
|
156
164
|
Commands:
|
|
157
165
|
{install,update,upgrade,remove,uninstall,list,show,path,cache}
|
|
158
|
-
install Install one or
|
|
159
|
-
standalone release.
|
|
166
|
+
install Install one, more, or all versions from a python-
|
|
167
|
+
build-standalone release.
|
|
160
168
|
update (upgrade) Update one, more, or all versions to another release.
|
|
161
169
|
remove (uninstall) Remove/uninstall one, more, or all versions.
|
|
162
170
|
list List installed versions and show which have an update
|
|
@@ -175,9 +183,10 @@ individual command:
|
|
|
175
183
|
### Command `install`
|
|
176
184
|
|
|
177
185
|
```
|
|
178
|
-
usage: pystand install [-h] [-r RELEASE] [-
|
|
186
|
+
usage: pystand install [-h] [-r RELEASE] [-a] [-A] [--skip] [-f] [-s]
|
|
187
|
+
[version ...]
|
|
179
188
|
|
|
180
|
-
Install one or
|
|
189
|
+
Install one, more, or all versions from a python-build-standalone release.
|
|
181
190
|
|
|
182
191
|
positional arguments:
|
|
183
192
|
version version to install. E.g. 3.12 or 3.12.3
|
|
@@ -188,6 +197,11 @@ options:
|
|
|
188
197
|
install from specified python-build-standalone
|
|
189
198
|
YYYYMMDD release (e.g. 20240415), default is latest
|
|
190
199
|
release
|
|
200
|
+
-a, --all install ALL versions from release
|
|
201
|
+
-A, --all-prerelease install ALL versions from release, including pre-
|
|
202
|
+
releases
|
|
203
|
+
--skip skip the specified versions when installing all (only
|
|
204
|
+
can be specified with --all)
|
|
191
205
|
-f, --force force install even if already installed
|
|
192
206
|
-s, --include-source also install source files if available in distribution
|
|
193
207
|
download
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pystand
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.23
|
|
4
4
|
Summary: Install Python versions from python-build-standalone project
|
|
5
5
|
Author-email: Mark Blakeney <mark.blakeney@bullet-systems.net>
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -27,14 +27,14 @@ installation, and update of pre-built Python versions from the
|
|
|
27
27
|
[`python-build-standalone`][pbs] project. The following commands are
|
|
28
28
|
provided:
|
|
29
29
|
|
|
30
|
-
|Command
|
|
31
|
-
|---------|--------------------------------------------------------------------|
|
|
32
|
-
|`install`|Install one or
|
|
33
|
-
|`update` (or `upgrade`)
|
|
34
|
-
|`remove` (or `uninstall`)
|
|
35
|
-
|`list
|
|
36
|
-
|`show
|
|
37
|
-
|`path
|
|
30
|
+
|Command|Description|
|
|
31
|
+
|---------|--------------------------------------------------------------------|
|
|
32
|
+
|`install`|Install one, more, or all versions from a python-build-standalone release.|
|
|
33
|
+
|`update` (or `upgrade`)|Update one, more, or all versions to another release.|
|
|
34
|
+
|`remove` (or `uninstall`)|Remove/uninstall one, more, or all versions.|
|
|
35
|
+
|`list`|List installed versions and show which have an update available.|
|
|
36
|
+
|`show`|Show versions available from a release.|
|
|
37
|
+
|`path`|Show path prefix to installed version base directory.|
|
|
38
38
|
|
|
39
39
|
By default, Python versions are sourced from the latest
|
|
40
40
|
`python-build-standalone` [release][pbs-rel] available (e.g.
|
|
@@ -89,6 +89,14 @@ Version 3.10.14 @ 20240415 removed.
|
|
|
89
89
|
|
|
90
90
|
$ pystand list
|
|
91
91
|
3.12.3 @ 20240415 distribution="x86_64-unknown-linux-gnu-install_only_stripped"
|
|
92
|
+
|
|
93
|
+
# Install all available versions from latest release:
|
|
94
|
+
$ pystand install -a
|
|
95
|
+
Version 3.8.19 @ 20240415 installed.
|
|
96
|
+
Version 3.9.19 @ 20240415 installed.
|
|
97
|
+
Version 3.10.14 @ 20240415 installed.
|
|
98
|
+
Version 3.11.9 @ 20240415 installed.
|
|
99
|
+
Version 3.12.3 is already installed.
|
|
92
100
|
```
|
|
93
101
|
|
|
94
102
|
Here are some examples showing how to use an installed version ..
|
|
@@ -175,8 +183,8 @@ options:
|
|
|
175
183
|
|
|
176
184
|
Commands:
|
|
177
185
|
{install,update,upgrade,remove,uninstall,list,show,path,cache}
|
|
178
|
-
install Install one or
|
|
179
|
-
standalone release.
|
|
186
|
+
install Install one, more, or all versions from a python-
|
|
187
|
+
build-standalone release.
|
|
180
188
|
update (upgrade) Update one, more, or all versions to another release.
|
|
181
189
|
remove (uninstall) Remove/uninstall one, more, or all versions.
|
|
182
190
|
list List installed versions and show which have an update
|
|
@@ -195,9 +203,10 @@ individual command:
|
|
|
195
203
|
### Command `install`
|
|
196
204
|
|
|
197
205
|
```
|
|
198
|
-
usage: pystand install [-h] [-r RELEASE] [-
|
|
206
|
+
usage: pystand install [-h] [-r RELEASE] [-a] [-A] [--skip] [-f] [-s]
|
|
207
|
+
[version ...]
|
|
199
208
|
|
|
200
|
-
Install one or
|
|
209
|
+
Install one, more, or all versions from a python-build-standalone release.
|
|
201
210
|
|
|
202
211
|
positional arguments:
|
|
203
212
|
version version to install. E.g. 3.12 or 3.12.3
|
|
@@ -208,6 +217,11 @@ options:
|
|
|
208
217
|
install from specified python-build-standalone
|
|
209
218
|
YYYYMMDD release (e.g. 20240415), default is latest
|
|
210
219
|
release
|
|
220
|
+
-a, --all install ALL versions from release
|
|
221
|
+
-A, --all-prerelease install ALL versions from release, including pre-
|
|
222
|
+
releases
|
|
223
|
+
--skip skip the specified versions when installing all (only
|
|
224
|
+
can be specified with --all)
|
|
211
225
|
-f, --force force install even if already installed
|
|
212
226
|
-s, --include-source also install source files if available in distribution
|
|
213
227
|
download
|
|
@@ -850,11 +850,10 @@ def main() -> str | None:
|
|
|
850
850
|
args._cert = create_cert(args.cert)
|
|
851
851
|
|
|
852
852
|
# Only allow one instance of this program to run (to read/write prefix and cache dirs)
|
|
853
|
-
|
|
854
|
-
c_lock = filelock.FileLock(cache_dir / '.lock')
|
|
853
|
+
locks = [filelock.FileLock(d / '.lock') for d in (prefix_dir, cache_dir)]
|
|
855
854
|
|
|
856
855
|
try:
|
|
857
|
-
with
|
|
856
|
+
with locks[0].acquire(blocking=False), locks[1].acquire(blocking=False):
|
|
858
857
|
args._release = get_release_tag(args)
|
|
859
858
|
result = args.func(args)
|
|
860
859
|
purge_unused_releases(args)
|
|
@@ -867,7 +866,7 @@ def main() -> str | None:
|
|
|
867
866
|
|
|
868
867
|
# COMMAND
|
|
869
868
|
class install_:
|
|
870
|
-
doc = f'Install one or
|
|
869
|
+
doc = f'Install one, more, or all versions from a {REPO} release.'
|
|
871
870
|
|
|
872
871
|
@staticmethod
|
|
873
872
|
def init(parser: ArgumentParser) -> None:
|
|
@@ -878,6 +877,21 @@ class install_:
|
|
|
878
877
|
f'YYYYMMDD release (e.g. {SAMPL_RELEASE}), '
|
|
879
878
|
'default is latest release',
|
|
880
879
|
)
|
|
880
|
+
parser.add_argument(
|
|
881
|
+
'-a', '--all', action='store_true', help='install ALL versions from release'
|
|
882
|
+
)
|
|
883
|
+
parser.add_argument(
|
|
884
|
+
'-A',
|
|
885
|
+
'--all-prerelease',
|
|
886
|
+
action='store_true',
|
|
887
|
+
help='install ALL versions from release, including pre-releases',
|
|
888
|
+
)
|
|
889
|
+
parser.add_argument(
|
|
890
|
+
'--skip',
|
|
891
|
+
action='store_true',
|
|
892
|
+
help='skip the specified versions when '
|
|
893
|
+
'installing all (only can be specified with --all)',
|
|
894
|
+
)
|
|
881
895
|
parser.add_argument(
|
|
882
896
|
'-f',
|
|
883
897
|
'--force',
|
|
@@ -891,7 +905,7 @@ class install_:
|
|
|
891
905
|
help='also install source files if available in distribution download',
|
|
892
906
|
)
|
|
893
907
|
parser.add_argument(
|
|
894
|
-
'version', nargs='
|
|
908
|
+
'version', nargs='*', help='version to install. E.g. 3.12 or 3.12.3'
|
|
895
909
|
)
|
|
896
910
|
|
|
897
911
|
@staticmethod
|
|
@@ -902,6 +916,31 @@ class install_:
|
|
|
902
916
|
return f'Release "{release}" not found, or has no compatible files.'
|
|
903
917
|
|
|
904
918
|
matcher = VersionMatcher(files)
|
|
919
|
+
|
|
920
|
+
if args.all_prerelease:
|
|
921
|
+
args.all = True
|
|
922
|
+
|
|
923
|
+
if args.all:
|
|
924
|
+
if not args.skip and args.version:
|
|
925
|
+
args.parser.error(
|
|
926
|
+
'Can not specify versions with --all unless also specifying --skip.'
|
|
927
|
+
)
|
|
928
|
+
|
|
929
|
+
skips = set(v for ver in args.version if (v := matcher.match(ver)))
|
|
930
|
+
|
|
931
|
+
args.version = [
|
|
932
|
+
v
|
|
933
|
+
for v in files
|
|
934
|
+
if (args.all_prerelease or is_release_version(v)) and v not in skips
|
|
935
|
+
]
|
|
936
|
+
|
|
937
|
+
else:
|
|
938
|
+
if args.skip:
|
|
939
|
+
args.parser.error('--skip can only be specified with --all.')
|
|
940
|
+
|
|
941
|
+
if not args.version:
|
|
942
|
+
args.parser.error('Must specify at least one version, or --all.')
|
|
943
|
+
|
|
905
944
|
for version in args.version:
|
|
906
945
|
full_version = matcher.match(version)
|
|
907
946
|
if not full_version:
|
|
@@ -911,7 +950,8 @@ class install_:
|
|
|
911
950
|
vdir = args._versions / version
|
|
912
951
|
|
|
913
952
|
if vdir.exists() and not args.force:
|
|
914
|
-
|
|
953
|
+
print(f'Version {version} is already installed.', file=sys.stderr)
|
|
954
|
+
continue
|
|
915
955
|
|
|
916
956
|
if error := install(args, vdir, release, args._distribution, files):
|
|
917
957
|
return error
|
|
@@ -1244,7 +1284,7 @@ class path_:
|
|
|
1244
1284
|
else:
|
|
1245
1285
|
path = args._versions / version
|
|
1246
1286
|
if not path.exists():
|
|
1247
|
-
return f'Version
|
|
1287
|
+
return f'Version {version} is not installed.'
|
|
1248
1288
|
|
|
1249
1289
|
if args.resolve:
|
|
1250
1290
|
path = path.resolve()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|