pystand 1.10__py3-none-any.whl → 1.12__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pystand
3
- Version: 1.10
3
+ Version: 1.12
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: GPLv3
@@ -155,7 +155,7 @@ options:
155
155
  rate limiting.
156
156
  --no-strip do not use or create stripped binaries
157
157
  --no-extra-strip do not restrip already stripped source binaries
158
- -V show pystand version
158
+ -V, --version just show pystand version
159
159
 
160
160
  Commands:
161
161
  {install,update,remove,list,show,path}
@@ -280,8 +280,8 @@ usage: pystand path [-h] [-p] [version]
280
280
  Show path prefix to installed version base directory.
281
281
 
282
282
  positional arguments:
283
- version version to return path for, or latest release version if
284
- not specified
283
+ version version to return path for, or latest installed version
284
+ if not specified
285
285
 
286
286
  options:
287
287
  -h, --help show this help message and exit
@@ -0,0 +1,6 @@
1
+ pystand.py,sha256=lWNyCZTLNNmh6OoKrAG7pKCqOaoZollVpCWbAHrCxeM,32450
2
+ pystand-1.12.dist-info/METADATA,sha256=VV3aLNNThQ0p06Hk_MWTN79jZ4MaKCgF273oMuRrZBE,15923
3
+ pystand-1.12.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
4
+ pystand-1.12.dist-info/entry_points.txt,sha256=DG4ps3I3nni1bubV1tXs6u8FARgkdbAYaEAzZD4RAo8,41
5
+ pystand-1.12.dist-info/top_level.txt,sha256=NoWUh19UQymAJLHTCdxMnVwV6Teftef5fzyF3OWLyNY,8
6
+ pystand-1.12.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
pystand.py CHANGED
@@ -167,11 +167,11 @@ class VersionMatcher:
167
167
  version += '.'
168
168
 
169
169
  # Only allow upgrade of formal release to another formal
170
- # release, or alpha/beta release to another alpha/beta release.
170
+ # release.
171
171
  for full_version in self.seq:
172
172
  if full_version.startswith(version):
173
- if not upgrade \
174
- or is_release_version(full_version) == is_release:
173
+ if not upgrade or not is_release \
174
+ or is_release_version(full_version):
175
175
  return full_version
176
176
 
177
177
  return None
@@ -529,8 +529,8 @@ def main() -> str | None:
529
529
  help='do not use or create stripped binaries')
530
530
  opt.add_argument('--no-extra-strip', action='store_true',
531
531
  help='do not restrip already stripped source binaries')
532
- opt.add_argument('-V', action='store_true',
533
- help=f'show {PROG} version')
532
+ opt.add_argument('-V', '--version', action='store_true',
533
+ help=f'just show {PROG} version')
534
534
  cmd = opt.add_subparsers(title='Commands', dest='cmdname')
535
535
 
536
536
  # Add each command ..
@@ -569,12 +569,12 @@ def main() -> str | None:
569
569
 
570
570
  args = opt.parse_args(shlex.split(cnflines) + sys.argv[1:])
571
571
 
572
- if args.V:
573
- print(get_version())
574
-
575
572
  if 'func' not in args:
576
- if not args.V:
577
- opt.print_help()
573
+ if args.version:
574
+ print(get_version())
575
+ return None
576
+
577
+ opt.print_help()
578
578
  return None
579
579
 
580
580
  distribution = args.distribution or distro_default
@@ -670,11 +670,11 @@ class _update(COMMAND):
670
670
  if not (data := get_json(args._versions / version / args._data)):
671
671
  continue
672
672
 
673
- release = data.get('release')
674
- if release == release_target:
673
+ if (release := data.get('release')) == release_target:
675
674
  continue
676
675
 
677
- nextver = matcher.match(version, upgrade=True)
676
+ if not (nextver := matcher.match(version, upgrade=True)):
677
+ continue
678
678
 
679
679
  distribution = data.get('distribution')
680
680
  if not distribution or distribution not in files.get(nextver, {}):
@@ -768,23 +768,31 @@ class _list(COMMAND):
768
768
  app = ''
769
769
  if release_target and release != release_target:
770
770
  nextver = matcher.match(version, upgrade=True)
771
- new_vdir = args._versions / nextver
772
- if nextver != version and new_vdir.exists():
771
+ if not nextver:
773
772
  if args.verbose:
774
- nrelease = get_json(
775
- new_vdir / args._data).get('release', '?')
776
- app = f' not eligible for '\
777
- f'update because {fmt(nextver, nrelease)} '\
778
- 'is already installed.'
773
+ app = ' not eligible for update because '\
774
+ f'release {release_target} does not provide '\
775
+ 'this version.'
779
776
  else:
780
- # May not be updatable if newer release does not support
781
- # this same distribution anymore
782
- if nextver and distribution in files.get(nextver, {}):
783
- upd = f' updatable to {fmt(nextver, release_target)}'
784
- elif args.verbose:
785
- app = f' not eligible for update because '\
786
- f'{fmt(nextver, release_target)} does '\
787
- f'not provide distribution="{distribution}".'
777
+ new_vdir = args._versions / nextver
778
+ if nextver != version and new_vdir.exists():
779
+ if args.verbose:
780
+ nrelease = get_json(
781
+ new_vdir / args._data).get('release', '?')
782
+ app = f' not eligible for '\
783
+ f'update because {fmt(nextver, nrelease)} '\
784
+ 'is already installed.'
785
+ else:
786
+ # May not be updatable if newer release does not support
787
+ # this same distribution anymore
788
+ if nextver and distribution in files.get(nextver, {}):
789
+ upd = ' updatable to '\
790
+ f'{fmt(nextver, release_target)}'
791
+ elif args.verbose:
792
+ app = ' not eligible for update because '\
793
+ f'{fmt(nextver, release_target)} does '\
794
+ 'not provide '\
795
+ f'distribution="{distribution}".'
788
796
 
789
797
  print(f'{fmt(version, release)}{upd} '
790
798
  f'distribution="{distribution}"{app}')
@@ -841,12 +849,15 @@ class _path(COMMAND):
841
849
  help='return full path to python executable')
842
850
  parser.add_argument('version', nargs='?',
843
851
  help='version to return path for, or latest '
844
- 'release version if not specified')
852
+ 'installed version if not specified')
845
853
 
846
854
  @staticmethod
847
855
  def run(args: Namespace) -> str | None:
848
856
  matcher = VersionMatcher([f.name for f in iter_versions(args)])
849
857
  version = matcher.match(args.version) or args.version
858
+ if not version:
859
+ return 'No Python version installed.'
860
+
850
861
  path = args._versions / version
851
862
  if not path.is_dir():
852
863
  return f'Version "{version}" is not installed.'
@@ -1,6 +0,0 @@
1
- pystand.py,sha256=KJbvxHMzi28M4HqgGS9A4YaGYrpDn-T4hhuaQqbGW2E,31942
2
- pystand-1.10.dist-info/METADATA,sha256=f_l5yws3MCMJicGVN-o40gj1RlehBZ_Hg9jeYxLzLb4,15916
3
- pystand-1.10.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
4
- pystand-1.10.dist-info/entry_points.txt,sha256=DG4ps3I3nni1bubV1tXs6u8FARgkdbAYaEAzZD4RAo8,41
5
- pystand-1.10.dist-info/top_level.txt,sha256=NoWUh19UQymAJLHTCdxMnVwV6Teftef5fzyF3OWLyNY,8
6
- pystand-1.10.dist-info/RECORD,,