ducktools-pythonfinder 0.6.1__tar.gz → 0.6.3__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 (39) hide show
  1. {ducktools_pythonfinder-0.6.1/src/ducktools_pythonfinder.egg-info → ducktools_pythonfinder-0.6.3}/PKG-INFO +1 -1
  2. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/__main__.py +4 -1
  3. ducktools_pythonfinder-0.6.3/src/ducktools/pythonfinder/_version.py +2 -0
  4. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/shared.py +20 -7
  5. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3/src/ducktools_pythonfinder.egg-info}/PKG-INFO +1 -1
  6. ducktools_pythonfinder-0.6.1/src/ducktools/pythonfinder/_version.py +0 -2
  7. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/.gitignore +0 -0
  8. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/LICENSE +0 -0
  9. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/MANIFEST.in +0 -0
  10. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/README.md +0 -0
  11. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/pyproject.toml +0 -0
  12. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/scripts/build_zipapp.py +0 -0
  13. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/scripts/detail_this_python.py +0 -0
  14. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/scripts/print_python_versions.py +0 -0
  15. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/setup.cfg +0 -0
  16. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/__init__.py +0 -0
  17. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/darwin/__init__.py +0 -0
  18. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/details_script.py +0 -0
  19. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/linux/__init__.py +0 -0
  20. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/linux/pyenv_search.py +0 -0
  21. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/pythonorg_search.py +0 -0
  22. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/win32/__init__.py +0 -0
  23. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/win32/pyenv_search.py +0 -0
  24. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools/pythonfinder/win32/registry_search.py +0 -0
  25. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools_pythonfinder.egg-info/SOURCES.txt +0 -0
  26. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools_pythonfinder.egg-info/dependency_links.txt +0 -0
  27. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools_pythonfinder.egg-info/entry_points.txt +0 -0
  28. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools_pythonfinder.egg-info/requires.txt +0 -0
  29. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/src/ducktools_pythonfinder.egg-info/top_level.txt +0 -0
  30. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/conftest.py +0 -0
  31. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/sources/python_versions.txt +0 -0
  32. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/sources/release.json +0 -0
  33. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/sources/release_file.json +0 -0
  34. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/test_details_script.py +0 -0
  35. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/test_foldersearch.py +0 -0
  36. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/test_orgsearch.py +0 -0
  37. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/test_pyenv.py +0 -0
  38. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/test_shared.py +0 -0
  39. {ducktools_pythonfinder-0.6.1 → ducktools_pythonfinder-0.6.3}/tests/test_uv_finder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ducktools-pythonfinder
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Cross platform tool to find available python installations
5
5
  Author: David C Ellis
6
6
  Project-URL: Homepage, https://github.com/davidcellis/ducktools-pythonfinder
@@ -184,7 +184,10 @@ def display_local_installs(
184
184
  if install.shadowed:
185
185
  version_str = f"[{version_str}]"
186
186
 
187
- if install.implementation != "cpython":
187
+ if (
188
+ install.implementation != "cpython"
189
+ and install.implementation_version != install.version
190
+ ):
188
191
  alternate_implementations = True
189
192
  version_str = f"({install.implementation_version_str}) {version_str}"
190
193
 
@@ -0,0 +1,2 @@
1
+ __version__ = "0.6.3"
2
+ __version_tuple__ = (0, 6, 3)
@@ -88,7 +88,7 @@ def version_tuple_to_str(version_tuple):
88
88
  else:
89
89
  releaselevel = ""
90
90
 
91
- if serial == 0:
91
+ if serial == 0 or not releaselevel:
92
92
  serial = ""
93
93
  else:
94
94
  serial = f"{serial}"
@@ -151,13 +151,14 @@ class PythonInstall(Prefab):
151
151
  @property
152
152
  def implementation_version(self) -> tuple[int, int, int, str, int] | None:
153
153
  if self._implementation_version is None:
154
- if self.implementation == "cpython":
155
- self._implementation_version = self.version
156
- elif implementation_ver := self.metadata.get(f"{self.implementation}_version"):
154
+ if implementation_ver := self.metadata.get(f"{self.implementation}_version"):
157
155
  if len(implementation_ver) == 3:
158
156
  self._implementation_version = tuple([*implementation_ver, "final", 0]) # type: ignore
159
157
  else:
160
158
  self._implementation_version = implementation_ver
159
+ else:
160
+ self._implementation_version = self.version
161
+
161
162
  return self._implementation_version
162
163
 
163
164
  @property
@@ -272,12 +273,24 @@ def get_folder_pythons(
272
273
 
273
274
  with os.scandir(base_folder) as fld:
274
275
  for file_path in fld:
276
+ try:
277
+ is_file = file_path.is_file()
278
+ except PermissionError:
279
+ continue
280
+
275
281
  if (
276
- not file_path.is_symlink()
277
- and file_path.is_file()
282
+ is_file
278
283
  and any(reg.fullmatch(file_path.name) for reg in regexes)
279
284
  ):
280
- install = get_install_details(file_path.path)
285
+ p = file_path.path
286
+ if file_path.is_symlink():
287
+ # Might be a venv - look for pyvenv.cfg in parent
288
+ fld = os.path.dirname(p)
289
+ if os.path.exists(os.path.join(fld, "../pyvenv.cfg")):
290
+ continue
291
+ else:
292
+ p = file_path.path
293
+ install = get_install_details(p)
281
294
  if install:
282
295
  yield install
283
296
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ducktools-pythonfinder
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Cross platform tool to find available python installations
5
5
  Author: David C Ellis
6
6
  Project-URL: Homepage, https://github.com/davidcellis/ducktools-pythonfinder
@@ -1,2 +0,0 @@
1
- __version__ = "0.6.1"
2
- __version_tuple__ = (0, 6, 1)