|
26 | 26 | # Workaround for installing PyVISA on Windows from source: |
27 | 27 | os.environ["HOME"] = os.environ["USERPROFILE"] |
28 | 28 |
|
29 | | -class BasePackage: |
30 | | - def __init__(self, fname): |
| 29 | +class Package: |
| 30 | + "standardize a Package from filename or pip list" |
| 31 | + def __init__(self, fname, suggested_summary=None): |
31 | 32 | self.fname = fname |
| 33 | + self.description = piptree.sum_up(suggested_summary) if suggested_summary else "" |
32 | 34 | self.name = None |
33 | 35 | self.version = None |
34 | | - self.description = "" |
| 36 | + if fname.endswith((".zip", ".tar.gz", ".whl")): |
| 37 | + bname = Path(self.fname).name #wheel style name like "sqlite_bro-1.0.0..." |
| 38 | + infos = utils.get_source_package_infos(bname) # get name, version |
| 39 | + if infos is not None: |
| 40 | + self.name, self.version = infos |
| 41 | + self.name = utils.normalize(self.name) |
35 | 42 | self.url = None |
| 43 | + self.files = [] |
| 44 | + |
| 45 | + setattr(self,'url',"https://pypi.org/project/" + self.name) |
36 | 46 |
|
37 | 47 | def __str__(self): |
38 | 48 | return f"{self.name} {self.version}\r\n{self.description}\r\nWebsite: {self.url}" |
39 | | - |
40 | | - |
41 | | -class Package(BasePackage): |
42 | | - def __init__(self, fname, update=False, suggested_summary=None): |
43 | | - BasePackage.__init__(self, fname) |
44 | | - self.files = [] |
45 | | - self.extract_infos() |
46 | | - if suggested_summary: |
47 | | - setattr(self, 'description', |
48 | | - piptree.sum_up(suggested_summary )) |
49 | | - bname = fname.split("-")[0] |
50 | | - setattr(self,'url',"https://pypi.org/project/" + bname) |
51 | | - |
52 | | - def extract_infos(self): |
53 | | - "Extract package (name, version) from filename (installer basename)" |
54 | | - bname = Path(self.fname).name |
55 | | - if bname.endswith((".zip", ".tar.gz", ".whl")): |
56 | | - # distutils sdist |
57 | | - infos = utils.get_source_package_infos(bname) |
58 | | - if infos is not None: |
59 | | - self.name, self.version = infos |
60 | | - return |
61 | | - raise NotImplementedError(f"Not supported package type {bname}") |
62 | | - |
| 49 | + |
63 | 50 |
|
64 | 51 | class Distribution: |
65 | 52 | def __init__(self, target=None, verbose=False, indent=False): |
@@ -156,8 +143,7 @@ def get_installed_packages(self, update=False): |
156 | 143 | # create pip package list |
157 | 144 | wppm = [ |
158 | 145 | Package( |
159 | | - f"{i[0].replace('-', '_').lower()}-{i[1]}-py3-none-any.whl", |
160 | | - update=update, |
| 146 | + f"{i[0].replace('-', '_').lower()}-{i[1]}-py3-none-any.whl", #faking wheel |
161 | 147 | suggested_summary=self.pip.summary(i[0]) if self.pip else None |
162 | 148 | ) |
163 | 149 | for i in pip_list |
|
0 commit comments