pinginstaller 1.0.0__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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Cameron Bodine
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.1
2
+ Name: pinginstaller
3
+ Version: 1.0.0
4
+ Summary: Light-weight interface for running PING ecosystem (PINGMapper, etc.)
5
+ Author: Cameron Bodine
6
+ Author-email: bodine.cs@gmail.email
7
+ Project-URL: Issues, https://github.com/CameronBodine/PINGInstaller/issues
8
+ Project-URL: GitHub, https://github.com/CameronBodine/PINGInstaller
9
+ Project-URL: Homepage, https://cameronbodine.github.io/PINGMapper/
10
+ Keywords: pingmapper,sonar,ecology,remotesensing,sidescan,sidescan-sonar,aquatic,humminbird,lowrance,gis,oceanography,limnology
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Topic :: Scientific/Engineering
16
+ Classifier: Topic :: Scientific/Engineering :: Visualization
17
+ Classifier: Topic :: Scientific/Engineering :: Oceanography
18
+ Classifier: Topic :: Scientific/Engineering :: GIS
19
+ Classifier: Topic :: Scientific/Engineering :: Hydrology
20
+ Requires-Python: >3
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+
24
+ # PINGInstaller
25
+ Light-weight application for installing [PINGMapper](https://github.com/CameronBodine/PINGMapper) and associated packages. `PINGInstaller` is designed to install a `conda` environment from a yml specified as a URL or localy hosted yml.
26
+
27
+ Example yml file structure:
28
+
29
+ ```bash
30
+ name: ping
31
+ channels:
32
+ - conda-forge
33
+ - defaults
34
+ dependencies:
35
+ - python < 3.13
36
+ - gdal
37
+ - numpy
38
+ - git
39
+ - pandas
40
+ - geopandas
41
+ - pyproj
42
+ - scikit-image
43
+ - joblib
44
+ - matplotlib
45
+ - rasterio
46
+ - h5py
47
+ - pip
48
+ - pip:
49
+ - pingverter
50
+ - pingmapper
51
+ - pingwizard
52
+ - pinginstaller
53
+ - doodleverse_utils
54
+ - psutil
55
+ - tensorflow
56
+ - tf-keras
57
+ - transformers
58
+ - pysimplegui == 5.0.*
59
+ ```
60
+
61
+ The special thing about `PINGInstaller` is that it will install the `conda` environment based on the `conda` prompt it is launched from. This enables end-users with multiple `conda` installations to choose the flavor of `conda` as needed.
62
+
63
+ Supported prompts include (but may not be limited to):
64
+
65
+ - [Miniforge](https://conda-forge.org/download/)
66
+ - [Miniconda](https://docs.anaconda.com/miniconda/install/)
67
+ - [Anaconda](https://www.anaconda.com/download)
68
+ - [ArcGIS Python Command Prompt](https://pro.arcgis.com/en/pro-app/3.3/arcpy/get-started/installing-python-for-arcgis-pro.htm)
69
+
70
+ `PINGInstaller` is also compatible with projects in the [Doodlevers](https://github.com/settings/organizations).
71
+
72
+ ## Installation & Usage
73
+
74
+ ### Step 1
75
+
76
+ Open (download, if not already available) the `conda` prompt you want to use (ex: On Windows 11 - Start --> All --> Anaconda (miniconda3) --> Anaconda Powershell Prompt).
77
+
78
+ ### Step 2
79
+
80
+ Install `PINGInstaller` in the `base` environment with:
81
+
82
+ ```bash
83
+ pip install pinginstaller
84
+ ```
85
+
86
+ ### Step 3
87
+
88
+ Then install the environment from a web or locally hosted yml with:
89
+
90
+ ```bash
91
+ python -m pinginstaller https://github.com/CameronBodine/PINGMapper/blob/main/conda/PINGMapper.yml
92
+ ```
93
+
94
+ That's it! Your environment is now ready to use.
95
+
96
+ If you want to update the environment, simply re-run the environment installation script with:
97
+
98
+ ```bash
99
+ python -m pinginstaller https://github.com/CameronBodine/PINGMapper/blob/main/conda/PINGMapper.yml
100
+ ```
101
+
102
+ Ta-ta for now!
103
+
@@ -0,0 +1,80 @@
1
+ # PINGInstaller
2
+ Light-weight application for installing [PINGMapper](https://github.com/CameronBodine/PINGMapper) and associated packages. `PINGInstaller` is designed to install a `conda` environment from a yml specified as a URL or localy hosted yml.
3
+
4
+ Example yml file structure:
5
+
6
+ ```bash
7
+ name: ping
8
+ channels:
9
+ - conda-forge
10
+ - defaults
11
+ dependencies:
12
+ - python < 3.13
13
+ - gdal
14
+ - numpy
15
+ - git
16
+ - pandas
17
+ - geopandas
18
+ - pyproj
19
+ - scikit-image
20
+ - joblib
21
+ - matplotlib
22
+ - rasterio
23
+ - h5py
24
+ - pip
25
+ - pip:
26
+ - pingverter
27
+ - pingmapper
28
+ - pingwizard
29
+ - pinginstaller
30
+ - doodleverse_utils
31
+ - psutil
32
+ - tensorflow
33
+ - tf-keras
34
+ - transformers
35
+ - pysimplegui == 5.0.*
36
+ ```
37
+
38
+ The special thing about `PINGInstaller` is that it will install the `conda` environment based on the `conda` prompt it is launched from. This enables end-users with multiple `conda` installations to choose the flavor of `conda` as needed.
39
+
40
+ Supported prompts include (but may not be limited to):
41
+
42
+ - [Miniforge](https://conda-forge.org/download/)
43
+ - [Miniconda](https://docs.anaconda.com/miniconda/install/)
44
+ - [Anaconda](https://www.anaconda.com/download)
45
+ - [ArcGIS Python Command Prompt](https://pro.arcgis.com/en/pro-app/3.3/arcpy/get-started/installing-python-for-arcgis-pro.htm)
46
+
47
+ `PINGInstaller` is also compatible with projects in the [Doodlevers](https://github.com/settings/organizations).
48
+
49
+ ## Installation & Usage
50
+
51
+ ### Step 1
52
+
53
+ Open (download, if not already available) the `conda` prompt you want to use (ex: On Windows 11 - Start --> All --> Anaconda (miniconda3) --> Anaconda Powershell Prompt).
54
+
55
+ ### Step 2
56
+
57
+ Install `PINGInstaller` in the `base` environment with:
58
+
59
+ ```bash
60
+ pip install pinginstaller
61
+ ```
62
+
63
+ ### Step 3
64
+
65
+ Then install the environment from a web or locally hosted yml with:
66
+
67
+ ```bash
68
+ python -m pinginstaller https://github.com/CameronBodine/PINGMapper/blob/main/conda/PINGMapper.yml
69
+ ```
70
+
71
+ That's it! Your environment is now ready to use.
72
+
73
+ If you want to update the environment, simply re-run the environment installation script with:
74
+
75
+ ```bash
76
+ python -m pinginstaller https://github.com/CameronBodine/PINGMapper/blob/main/conda/PINGMapper.yml
77
+ ```
78
+
79
+ Ta-ta for now!
80
+
@@ -0,0 +1,103 @@
1
+ import os, sys
2
+ import subprocess, re
3
+ import json
4
+
5
+ def install_housekeeping(conda_key):
6
+
7
+ subprocess.run('''"{}" update -y conda'''.format(conda_key), shell=True)
8
+ subprocess.run('''"{}" clean -y --all'''.format(conda_key), shell=True)
9
+ subprocess.run('''python -m pip install --upgrade pip''', shell=True)
10
+
11
+ def conda_env_exists(conda_key, env_name):
12
+
13
+ result = subprocess.run('''"{}" env list'''.format(conda_key), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
14
+ envs = result.stdout.splitlines()
15
+ for env in envs:
16
+ if re.search(rf'^{env_name}\s', env):
17
+ return True
18
+ return False
19
+
20
+ def install(conda_key, yml):
21
+
22
+ subprocess.run('''"{}" env create --file "{}"'''.format(conda_key, yml), shell=True)
23
+
24
+ subprocess.run('conda env list', shell=True)
25
+
26
+ return
27
+
28
+ def update(conda_key, yml):
29
+
30
+ subprocess.run('''"{}" env update --file "{}" --prune'''.format(conda_key, yml), shell=True)
31
+
32
+ subprocess.run('conda env list', shell=True)
33
+
34
+ return
35
+
36
+
37
+ # def install_update(conda_base, conda_key):
38
+ def install_update(yml):
39
+
40
+ subprocess.run('conda env list', shell=True)
41
+
42
+ ####################
43
+ # Make the conda key
44
+ ## This is the 'base' of the currently used conda prompt
45
+ ## Tested with miniconda and miniforge.
46
+ ## Assume works for Anaconda.
47
+ env_dir = os.environ['CONDA_PREFIX']
48
+
49
+ conda_key = os.path.join(env_dir, 'Scripts', 'conda.exe')
50
+
51
+ # Above doesn't work for ArcGIS conda installs
52
+ ## Make sure conda exists, if not, change to CONDA
53
+ if not os.path.exists(conda_key):
54
+ conda_key = os.environ.get('CONDA_EXE', 'conda')
55
+
56
+ print('conda_key:', conda_key)
57
+
58
+ ##############
59
+ # Housekeeping
60
+ install_housekeeping(conda_key)
61
+
62
+ ##############
63
+ # Download yml
64
+
65
+ # Download yml if necessary
66
+ del_yml = False
67
+ if yml.startswith("https:") or yml.startswith("http:"):
68
+ print("Downloading:", yml)
69
+
70
+ # Make sure ?raw=true at end
71
+ if not yml.endswith("?raw=true"):
72
+ yml += "?raw=true"
73
+ from pinginstaller.download_yml import get_yml
74
+ yml = get_yml(yml)
75
+
76
+ print("Downloaded yml:", yml)
77
+ del_yml = True
78
+
79
+ ######################
80
+ # Get environment name
81
+ with open(yml, 'r') as f:
82
+ for line in f:
83
+ if line.startswith('name:'):
84
+ env_name = line.split('name:')[-1].strip()
85
+
86
+ ######################################
87
+ # Install or update `ping` environment
88
+ if conda_env_exists(conda_key, env_name):
89
+ print(f"Updating '{env_name}' environment ...")
90
+ # subprocess.run([os.path.join(directory, "Update.bat"), conda_base, conda_key, yml], shell=True)
91
+ update(conda_key, yml)
92
+
93
+ else:
94
+ print(f"Creating '{env_name}' environment...")
95
+ # subprocess.run([os.path.join(directory, "Install.bat"), conda_base, conda_key, yml], shell=True)
96
+ install(conda_key, yml)
97
+
98
+ #########
99
+ # Cleanup
100
+ if del_yml:
101
+ os.remove(yml)
102
+
103
+
@@ -0,0 +1,2 @@
1
+
2
+ from .version import __version__
@@ -0,0 +1,25 @@
1
+
2
+ import os, sys
3
+
4
+ # Add 'pingwizard' to the path, may not need after pypi package...
5
+ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
6
+ PACKAGE_DIR = os.path.dirname(SCRIPT_DIR)
7
+ sys.path.append(PACKAGE_DIR)
8
+
9
+ # Get yml
10
+ if len(sys.argv) == 1:
11
+ yml = "https://github.com/CameronBodine/PINGMapper/blob/dev_v4/pingmapper/conda/PINGMapper.yml"
12
+ else:
13
+ yml = sys.argv[1]
14
+
15
+ def main(yml):
16
+
17
+ print('Env yml:', yml)
18
+
19
+ from pinginstaller.Install_Update_PINGMapper import install_update
20
+ install_update(yml)
21
+
22
+ return
23
+
24
+ if __name__ == '__main__':
25
+ main(yml)
@@ -0,0 +1,20 @@
1
+ import os, sys
2
+ import urllib.request
3
+
4
+ from pathlib import Path
5
+ home_path = os.path.join(Path.home())
6
+
7
+ def get_yml(url):
8
+
9
+ # Get yml data from github
10
+ with urllib.request.urlopen(url) as f:
11
+ yml_data = f.read().decode('utf-8')
12
+
13
+ # Make a temporary file
14
+ temp_file = os.path.join(home_path, 'pinginstaller_conda_file.yml')
15
+
16
+ # Write yml data to temporary file
17
+ with open(temp_file, 'w') as t:
18
+ t.write(yml_data)
19
+
20
+ return temp_file
@@ -0,0 +1 @@
1
+ __version__ = '1.0.0'
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.1
2
+ Name: pinginstaller
3
+ Version: 1.0.0
4
+ Summary: Light-weight interface for running PING ecosystem (PINGMapper, etc.)
5
+ Author: Cameron Bodine
6
+ Author-email: bodine.cs@gmail.email
7
+ Project-URL: Issues, https://github.com/CameronBodine/PINGInstaller/issues
8
+ Project-URL: GitHub, https://github.com/CameronBodine/PINGInstaller
9
+ Project-URL: Homepage, https://cameronbodine.github.io/PINGMapper/
10
+ Keywords: pingmapper,sonar,ecology,remotesensing,sidescan,sidescan-sonar,aquatic,humminbird,lowrance,gis,oceanography,limnology
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Topic :: Scientific/Engineering
16
+ Classifier: Topic :: Scientific/Engineering :: Visualization
17
+ Classifier: Topic :: Scientific/Engineering :: Oceanography
18
+ Classifier: Topic :: Scientific/Engineering :: GIS
19
+ Classifier: Topic :: Scientific/Engineering :: Hydrology
20
+ Requires-Python: >3
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+
24
+ # PINGInstaller
25
+ Light-weight application for installing [PINGMapper](https://github.com/CameronBodine/PINGMapper) and associated packages. `PINGInstaller` is designed to install a `conda` environment from a yml specified as a URL or localy hosted yml.
26
+
27
+ Example yml file structure:
28
+
29
+ ```bash
30
+ name: ping
31
+ channels:
32
+ - conda-forge
33
+ - defaults
34
+ dependencies:
35
+ - python < 3.13
36
+ - gdal
37
+ - numpy
38
+ - git
39
+ - pandas
40
+ - geopandas
41
+ - pyproj
42
+ - scikit-image
43
+ - joblib
44
+ - matplotlib
45
+ - rasterio
46
+ - h5py
47
+ - pip
48
+ - pip:
49
+ - pingverter
50
+ - pingmapper
51
+ - pingwizard
52
+ - pinginstaller
53
+ - doodleverse_utils
54
+ - psutil
55
+ - tensorflow
56
+ - tf-keras
57
+ - transformers
58
+ - pysimplegui == 5.0.*
59
+ ```
60
+
61
+ The special thing about `PINGInstaller` is that it will install the `conda` environment based on the `conda` prompt it is launched from. This enables end-users with multiple `conda` installations to choose the flavor of `conda` as needed.
62
+
63
+ Supported prompts include (but may not be limited to):
64
+
65
+ - [Miniforge](https://conda-forge.org/download/)
66
+ - [Miniconda](https://docs.anaconda.com/miniconda/install/)
67
+ - [Anaconda](https://www.anaconda.com/download)
68
+ - [ArcGIS Python Command Prompt](https://pro.arcgis.com/en/pro-app/3.3/arcpy/get-started/installing-python-for-arcgis-pro.htm)
69
+
70
+ `PINGInstaller` is also compatible with projects in the [Doodlevers](https://github.com/settings/organizations).
71
+
72
+ ## Installation & Usage
73
+
74
+ ### Step 1
75
+
76
+ Open (download, if not already available) the `conda` prompt you want to use (ex: On Windows 11 - Start --> All --> Anaconda (miniconda3) --> Anaconda Powershell Prompt).
77
+
78
+ ### Step 2
79
+
80
+ Install `PINGInstaller` in the `base` environment with:
81
+
82
+ ```bash
83
+ pip install pinginstaller
84
+ ```
85
+
86
+ ### Step 3
87
+
88
+ Then install the environment from a web or locally hosted yml with:
89
+
90
+ ```bash
91
+ python -m pinginstaller https://github.com/CameronBodine/PINGMapper/blob/main/conda/PINGMapper.yml
92
+ ```
93
+
94
+ That's it! Your environment is now ready to use.
95
+
96
+ If you want to update the environment, simply re-run the environment installation script with:
97
+
98
+ ```bash
99
+ python -m pinginstaller https://github.com/CameronBodine/PINGMapper/blob/main/conda/PINGMapper.yml
100
+ ```
101
+
102
+ Ta-ta for now!
103
+
@@ -0,0 +1,12 @@
1
+ LICENSE
2
+ README.md
3
+ setup.py
4
+ pinginstaller/Install_Update_PINGMapper.py
5
+ pinginstaller/__init__.py
6
+ pinginstaller/__main__.py
7
+ pinginstaller/download_yml.py
8
+ pinginstaller/version.py
9
+ pinginstaller.egg-info/PKG-INFO
10
+ pinginstaller.egg-info/SOURCES.txt
11
+ pinginstaller.egg-info/dependency_links.txt
12
+ pinginstaller.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ pinginstaller
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,51 @@
1
+
2
+ from setuptools import setup, find_packages
3
+ from pathlib import Path
4
+
5
+ DESCRIPTION = 'Light-weight interface for running PING ecosystem (PINGMapper, etc.)'
6
+ LONG_DESCRIPTION = Path('README.md').read_text()
7
+
8
+ exec(open('pinginstaller/version.py').read())
9
+
10
+ setup(
11
+ name="pinginstaller",
12
+ version=__version__,
13
+ author="Cameron Bodine",
14
+ author_email="bodine.cs@gmail.email",
15
+ description=DESCRIPTION,
16
+ long_description=LONG_DESCRIPTION,
17
+ long_description_content_type='text/markdown',
18
+ packages=find_packages(),
19
+ # data_files=[("pingmapper_config", ["pinginstaller/PINGMapper.yml"])],
20
+ classifiers=[
21
+ "Development Status :: 4 - Beta",
22
+ "Programming Language :: Python :: 3",
23
+ "License :: OSI Approved :: MIT License",
24
+ "Operating System :: OS Independent",
25
+ "Topic :: Scientific/Engineering",
26
+ "Topic :: Scientific/Engineering :: Visualization",
27
+ "Topic :: Scientific/Engineering :: Oceanography",
28
+ "Topic :: Scientific/Engineering :: GIS",
29
+ "Topic :: Scientific/Engineering :: Hydrology"
30
+ ],
31
+ keywords=[
32
+ "pingmapper",
33
+ "sonar",
34
+ "ecology",
35
+ "remotesensing",
36
+ "sidescan",
37
+ "sidescan-sonar",
38
+ "aquatic",
39
+ "humminbird",
40
+ "lowrance",
41
+ "gis",
42
+ "oceanography",
43
+ "limnology",],
44
+ python_requires=">3",
45
+ install_requires=[],
46
+ project_urls={
47
+ "Issues": "https://github.com/CameronBodine/PINGInstaller/issues",
48
+ "GitHub":"https://github.com/CameronBodine/PINGInstaller",
49
+ "Homepage":"https://cameronbodine.github.io/PINGMapper/",
50
+ },
51
+ )