Merge pull request #2780 from PySimpleGUI/Dev-latest
Newest version of Ruud's upgrade from GitHub
This commit is contained in:
		
						commit
						41b6396021
					
				
					 1 changed files with 91 additions and 86 deletions
				
			
		|  | @ -1,6 +1,6 @@ | |||
| #!/usr/bin/python3 | ||||
| 
 | ||||
| version = __version__ = "4.18.0.16  Unreleased - Print and MLine.Print fixed sep char handling, popup_get_date, icon parm popup_animated, popup button size (6,1), NEW CALENDAR chooser integrated, Graph.draw_lines, color chooser set parent window, scrollable column scrollwheel fixed, autoscroll parm for Multiline.print, fixed TabGroup border width, EXPERIMENTAL Scrollable Columns" | ||||
| version = __version__ = "4.18.0.17  Unreleased - Print and MLine.Print fixed sep char handling, popup_get_date, icon parm popup_animated, popup button size (6,1), NEW CALENDAR chooser integrated, Graph.draw_lines, color chooser set parent window, scrollable column scrollwheel fixed, autoscroll parm for Multiline.print, fixed TabGroup border width, EXPERIMENTAL Scrollable Columns, fix for install from GitHub" | ||||
| 
 | ||||
| port = 'PySimpleGUI' | ||||
| 
 | ||||
|  | @ -15314,7 +15314,6 @@ def _refresh_debugger(): | |||
| # 888  888  888 .d888888 888 888  888 | ||||
| # 888  888  888 888  888 888 888  888 | ||||
| # 888  888  888 "Y888888 888 888  888 | ||||
| 
 | ||||
| import sys | ||||
| import site | ||||
| import shutil | ||||
|  | @ -15328,24 +15327,24 @@ import urllib.error | |||
| 
 | ||||
| def _install(files, url=None): | ||||
|     """ | ||||
|     install one file package from GitHub | ||||
|     install one file package from GitHub or current directory | ||||
| 
 | ||||
|     Parameters | ||||
|     ---------- | ||||
|     files : list | ||||
|         files to be installed | ||||
|         the first item (files[0]) will be used as the name of the package | ||||
|         optional files should be preceded wit an exclamation mark (!) | ||||
|         the first item (files[0]) will be used as the name of the package'' | ||||
|         optional files should be preceded with an exclamation mark (!) | ||||
| 
 | ||||
|     url : str | ||||
|         url of the location of the GitHub repository | ||||
|         this will start usually with https://raw.githubusercontent.com/ and end with /master/ | ||||
|         if omitted, the files will be copied from the current directory (no GitHub) | ||||
|         if omitted, the files will be copied from the current directory (not GitHub) | ||||
| 
 | ||||
| 
 | ||||
|     Returns | ||||
|     ------- | ||||
|     info : Info instance | ||||
|         with structure contains | ||||
|         info.package : name of the package installed | ||||
|         info.path : name where the package is installed in the site-packages | ||||
|         info.version : version of the package (obtained from <package>.py) | ||||
|  | @ -15357,13 +15356,22 @@ def _install(files, url=None): | |||
|     <package><version>.dist-info folder with the usual files METADATA, INSTALLER and RECORDS. | ||||
|     As the setup.py is not run, the METADATA is very limited, i.e. is contains just name and version. | ||||
| 
 | ||||
|     If an __init__.py is in files that file will be used. | ||||
|     If a __init__.py is in files that file will be used. | ||||
|     Otherwise, an __init__/py file will be generated. In thet case, if a __version__ = statement | ||||
|     is found in the source file, the __version__ will be included in that __init__.py file. | ||||
| 
 | ||||
|     Version history | ||||
|     --------------- | ||||
|     version 1.0.1  2020-03-04 | ||||
|     version 1.0.4  2020-03-29 | ||||
|         Linux and ios versions now search in sys.path for site-packages, | ||||
|         wheras other platforms now use site.getsitepackages(). | ||||
|         This is to aavoid installation in a roaming directory on Windows. | ||||
| 
 | ||||
|     version 1.0.2  2020-03-07 | ||||
|         modified several open calls to be compatible with Python < 3.6 | ||||
|         multipe installation for Pythonista removed. Now installs only in site-packages | ||||
| 
 | ||||
|     version 1.0.1  2020-03-06 | ||||
|         now uses urllib instead of requests to avoid non standard libraries | ||||
|         installation for Pythonista improved | ||||
| 
 | ||||
|  | @ -15382,9 +15390,9 @@ def _install(files, url=None): | |||
|     info = Info() | ||||
|     Pythonista = sys.platform == "ios" | ||||
|     if not files: | ||||
|         raise ValueError('no files specified') | ||||
|     if files[0][0] == '!': | ||||
|         raise ValueError('first item in files (sourcefile) may not be optional') | ||||
|         raise ValueError("no files specified") | ||||
|     if files[0][0] == "!": | ||||
|         raise ValueError("first item in files (sourcefile) may not be optional") | ||||
|     package = Path(files[0]).stem | ||||
|     sourcefile = files[0] | ||||
| 
 | ||||
|  | @ -15398,7 +15406,7 @@ def _install(files, url=None): | |||
|             try: | ||||
|                 with urllib.request.urlopen(url + file) as response: | ||||
|                     page = response.read() | ||||
|                 #                page = requests.get(url + file) | ||||
| 
 | ||||
|                 file_contents[file] = page | ||||
|                 exists = True | ||||
|             except urllib.error.URLError: | ||||
|  | @ -15429,51 +15437,48 @@ def _install(files, url=None): | |||
|     info.files_copied = list(file_contents.keys()) | ||||
|     info.package = package | ||||
|     info.version = version | ||||
|     paths = [] | ||||
| 
 | ||||
|     file = '__init__.py' | ||||
|     file = "__init__.py" | ||||
|     if file not in file_contents: | ||||
|         file_contents[file] = ("from ." + package + " import *\n").encode() | ||||
|         if version != 'unknown': | ||||
|         if version != "unknown": | ||||
|             file_contents[file] += ("from ." + package + " import __version__\n").encode() | ||||
|     if sys.platform.startswith('linux') or (sys.platform == 'ios'): | ||||
|         search_in = sys.path | ||||
|     else: | ||||
|         search_in = site.getsitepackages() | ||||
| 
 | ||||
|     if Pythonista: | ||||
|         cwd = Path.cwd() | ||||
|         parts1 = [] | ||||
|         for part in cwd.parts: | ||||
|             parts1.append(part) | ||||
|             if part == "Documents": | ||||
|     for f in search_in: | ||||
|         sitepackages_path = Path(f) | ||||
|         if sitepackages_path.name == "site-packages" and sitepackages_path.is_dir(): | ||||
|             break | ||||
|     else: | ||||
|             raise EnvironmentError("unable to install") | ||||
| 
 | ||||
|         sitepackages_paths = [Path(*parts1) / ("site-packages" + ver) for ver in ("", "-2", "-3")] | ||||
|     else: | ||||
|         sitepackages_paths = [Path(site.getsitepackages()[-1])] | ||||
| 
 | ||||
|     for sitepackages_path in sitepackages_paths: | ||||
|         raise ModuleNotFoundError("can't find the site-packages folder") | ||||
| 
 | ||||
|     path = sitepackages_path / package | ||||
|         paths.append(str(path)) | ||||
|     info.path = str(path) | ||||
| 
 | ||||
|     if path.is_file(): | ||||
|         path.unlink() | ||||
| 
 | ||||
|     if not path.is_dir(): | ||||
|         path.mkdir() | ||||
| 
 | ||||
|     for file, contents in file_contents.items(): | ||||
|             with open(path / file, "wb") as f: | ||||
|         with (path / file).open("wb") as f: | ||||
|             f.write(contents) | ||||
| 
 | ||||
|     if Pythonista: | ||||
|             pypi_packages = sitepackages_path / '.pypi_packages' | ||||
|         pypi_packages = sitepackages_path / ".pypi_packages" | ||||
|         config = configparser.ConfigParser() | ||||
|         config.read(pypi_packages) | ||||
|         config[package] = {} | ||||
|             config[package]['url'] = 'github' | ||||
|             config[package]['version'] = version | ||||
|             config[package]['summary'] = '' | ||||
|             config[package]['files'] = path.as_posix() | ||||
|             config[package]['dependency'] = '' | ||||
|             with pypi_packages.open('w') as f: | ||||
|         config[package]["url"] = "github" | ||||
|         config[package]["version"] = version | ||||
|         config[package]["summary"] = "" | ||||
|         config[package]["files"] = path.as_posix() | ||||
|         config[package]["dependency"] = "" | ||||
|         with pypi_packages.open("w") as f: | ||||
|             config.write(f) | ||||
|     else: | ||||
|         for entry in sitepackages_path.glob("*"): | ||||
|  | @ -15483,16 +15488,16 @@ def _install(files, url=None): | |||
|         path_distinfo = Path(str(path) + "-" + version + ".dist-info") | ||||
|         if not path_distinfo.is_dir(): | ||||
|             path_distinfo.mkdir() | ||||
|             with open(path_distinfo / "METADATA", "w") as f:  # make a dummy METADATA file | ||||
|         with (path_distinfo / "METADATA").open("w") as f:  # make a dummy METADATA file | ||||
|             f.write("Name: " + package + "\n") | ||||
|             f.write("Version: " + version + "\n") | ||||
| 
 | ||||
|             with open(path_distinfo / "INSTALLER", "w") as f:  # make a dummy METADATA file | ||||
|         with (path_distinfo / "INSTALLER").open("w") as f:  # make a dummy METADATA file | ||||
|             f.write("github\n") | ||||
|             with open(path_distinfo / "RECORD", "w") as f: | ||||
|         with (path_distinfo / "RECORD").open("w") as f: | ||||
|             pass  # just to create the file to be recorded | ||||
| 
 | ||||
|             with open(path_distinfo / "RECORD", "w") as record_file: | ||||
|         with (path_distinfo / "RECORD").open("w") as record_file: | ||||
| 
 | ||||
|             for p in (path, path_distinfo): | ||||
|                 for file in p.glob("**/*"): | ||||
|  | @ -15504,7 +15509,7 @@ def _install(files, url=None): | |||
|                         if (file.stem == "RECORD" and p == path_distinfo) or ("__pycache__" in name.lower()): | ||||
|                             record_file.write(",") | ||||
|                         else: | ||||
|                                 with open(file, "rb") as f: | ||||
|                             with file.open("rb") as f: | ||||
|                                 file_contents = f.read() | ||||
|                                 hash = "sha256=" + base64.urlsafe_b64encode( | ||||
|                                     hashlib.sha256(file_contents).digest() | ||||
|  | @ -15516,9 +15521,9 @@ def _install(files, url=None): | |||
| 
 | ||||
|                         record_file.write("\n") | ||||
| 
 | ||||
|     info.path = ','.join(paths) | ||||
|     return info | ||||
| 
 | ||||
| 
 | ||||
| def _upgrade_from_github(): | ||||
|     info = _install( | ||||
|         files="PySimpleGUI.py !init.py".split(), url="https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/master/" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue