lium.io 0.0.1__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 (169) hide show
  1. lium_io-0.0.1/.github/workflows/release.yml +56 -0
  2. lium_io-0.0.1/.gitignore +181 -0
  3. lium_io-0.0.1/.readthedocs.yaml +15 -0
  4. lium_io-0.0.1/CHANGELOG.md +123 -0
  5. lium_io-0.0.1/LICENSE +21 -0
  6. lium_io-0.0.1/PKG-INFO +322 -0
  7. lium_io-0.0.1/README.md +269 -0
  8. lium_io-0.0.1/assets/web-app-logo.png +0 -0
  9. lium_io-0.0.1/docs/_static/.gitkeep +1 -0
  10. lium_io-0.0.1/docs/_templates/.gitkeep +1 -0
  11. lium_io-0.0.1/docs/api/lium.sdk.BackupConfig.rst +36 -0
  12. lium_io-0.0.1/docs/api/lium.sdk.BackupLog.rst +37 -0
  13. lium_io-0.0.1/docs/api/lium.sdk.Config.rst +33 -0
  14. lium_io-0.0.1/docs/api/lium.sdk.ExecutorInfo.rst +41 -0
  15. lium_io-0.0.1/docs/api/lium.sdk.Lium.rst +68 -0
  16. lium_io-0.0.1/docs/api/lium.sdk.PodInfo.rst +43 -0
  17. lium_io-0.0.1/docs/api/lium.sdk.Template.rst +34 -0
  18. lium_io-0.0.1/docs/api/lium.sdk.VolumeInfo.rst +38 -0
  19. lium_io-0.0.1/docs/api/lium.sdk.machine.rst +6 -0
  20. lium_io-0.0.1/docs/api.rst +41 -0
  21. lium_io-0.0.1/docs/conf.py +42 -0
  22. lium_io-0.0.1/docs/getting-started.rst +63 -0
  23. lium_io-0.0.1/docs/index.rst +14 -0
  24. lium_io-0.0.1/docs/requirements.txt +3 -0
  25. lium_io-0.0.1/lium/__init__.py +3 -0
  26. lium_io-0.0.1/lium/cli/__init__.py +1 -0
  27. lium_io-0.0.1/lium/cli/actions.py +11 -0
  28. lium_io-0.0.1/lium/cli/bk/__init__.py +26 -0
  29. lium_io-0.0.1/lium/cli/bk/logs/actions.py +38 -0
  30. lium_io-0.0.1/lium/cli/bk/logs/command.py +80 -0
  31. lium_io-0.0.1/lium/cli/bk/logs/display.py +72 -0
  32. lium_io-0.0.1/lium/cli/bk/logs/parsing.py +23 -0
  33. lium_io-0.0.1/lium/cli/bk/logs/validation.py +9 -0
  34. lium_io-0.0.1/lium/cli/bk/now/actions.py +31 -0
  35. lium_io-0.0.1/lium/cli/bk/now/command.py +61 -0
  36. lium_io-0.0.1/lium/cli/bk/now/parsing.py +39 -0
  37. lium_io-0.0.1/lium/cli/bk/now/validation.py +9 -0
  38. lium_io-0.0.1/lium/cli/bk/restore/actions.py +20 -0
  39. lium_io-0.0.1/lium/cli/bk/restore/command.py +61 -0
  40. lium_io-0.0.1/lium/cli/bk/restore/parsing.py +20 -0
  41. lium_io-0.0.1/lium/cli/bk/restore/validation.py +12 -0
  42. lium_io-0.0.1/lium/cli/bk/rm/actions.py +23 -0
  43. lium_io-0.0.1/lium/cli/bk/rm/command.py +67 -0
  44. lium_io-0.0.1/lium/cli/bk/rm/parsing.py +20 -0
  45. lium_io-0.0.1/lium/cli/bk/rm/validation.py +9 -0
  46. lium_io-0.0.1/lium/cli/bk/set/actions.py +33 -0
  47. lium_io-0.0.1/lium/cli/bk/set/command.py +74 -0
  48. lium_io-0.0.1/lium/cli/bk/set/parsing.py +50 -0
  49. lium_io-0.0.1/lium/cli/bk/set/validation.py +21 -0
  50. lium_io-0.0.1/lium/cli/bk/show/actions.py +58 -0
  51. lium_io-0.0.1/lium/cli/bk/show/command.py +80 -0
  52. lium_io-0.0.1/lium/cli/bk/show/parsing.py +20 -0
  53. lium_io-0.0.1/lium/cli/bk/show/validation.py +9 -0
  54. lium_io-0.0.1/lium/cli/cli.py +95 -0
  55. lium_io-0.0.1/lium/cli/commands/__init__.py +1 -0
  56. lium_io-0.0.1/lium/cli/commands/exec.py +129 -0
  57. lium_io-0.0.1/lium/cli/commands/mine.py +443 -0
  58. lium_io-0.0.1/lium/cli/completion.py +71 -0
  59. lium_io-0.0.1/lium/cli/config/__init__.py +28 -0
  60. lium_io-0.0.1/lium/cli/config/edit/actions.py +23 -0
  61. lium_io-0.0.1/lium/cli/config/edit/command.py +22 -0
  62. lium_io-0.0.1/lium/cli/config/get/actions.py +17 -0
  63. lium_io-0.0.1/lium/cli/config/get/command.py +42 -0
  64. lium_io-0.0.1/lium/cli/config/get/validation.py +9 -0
  65. lium_io-0.0.1/lium/cli/config/path/actions.py +12 -0
  66. lium_io-0.0.1/lium/cli/config/path/command.py +22 -0
  67. lium_io-0.0.1/lium/cli/config/reset/actions.py +17 -0
  68. lium_io-0.0.1/lium/cli/config/reset/command.py +28 -0
  69. lium_io-0.0.1/lium/cli/config/set/actions.py +20 -0
  70. lium_io-0.0.1/lium/cli/config/set/command.py +40 -0
  71. lium_io-0.0.1/lium/cli/config/set/validation.py +9 -0
  72. lium_io-0.0.1/lium/cli/config/show/actions.py +23 -0
  73. lium_io-0.0.1/lium/cli/config/show/command.py +26 -0
  74. lium_io-0.0.1/lium/cli/config/unset/actions.py +17 -0
  75. lium_io-0.0.1/lium/cli/config/unset/command.py +23 -0
  76. lium_io-0.0.1/lium/cli/fund/__init__.py +5 -0
  77. lium_io-0.0.1/lium/cli/fund/actions.py +141 -0
  78. lium_io-0.0.1/lium/cli/fund/command.py +113 -0
  79. lium_io-0.0.1/lium/cli/fund/validation.py +16 -0
  80. lium_io-0.0.1/lium/cli/init/__init__.py +5 -0
  81. lium_io-0.0.1/lium/cli/init/actions.py +56 -0
  82. lium_io-0.0.1/lium/cli/init/auth.py +62 -0
  83. lium_io-0.0.1/lium/cli/init/command.py +35 -0
  84. lium_io-0.0.1/lium/cli/ls/__init__.py +5 -0
  85. lium_io-0.0.1/lium/cli/ls/actions.py +33 -0
  86. lium_io-0.0.1/lium/cli/ls/command.py +112 -0
  87. lium_io-0.0.1/lium/cli/ls/display.py +222 -0
  88. lium_io-0.0.1/lium/cli/ls/validation.py +31 -0
  89. lium_io-0.0.1/lium/cli/plugin_example.py +161 -0
  90. lium_io-0.0.1/lium/cli/plugin_helpers.py +39 -0
  91. lium_io-0.0.1/lium/cli/plugins.py +56 -0
  92. lium_io-0.0.1/lium/cli/ps/__init__.py +5 -0
  93. lium_io-0.0.1/lium/cli/ps/actions.py +24 -0
  94. lium_io-0.0.1/lium/cli/ps/command.py +53 -0
  95. lium_io-0.0.1/lium/cli/ps/display.py +147 -0
  96. lium_io-0.0.1/lium/cli/reboot/__init__.py +5 -0
  97. lium_io-0.0.1/lium/cli/reboot/actions.py +29 -0
  98. lium_io-0.0.1/lium/cli/reboot/command.py +53 -0
  99. lium_io-0.0.1/lium/cli/reboot/parsing.py +29 -0
  100. lium_io-0.0.1/lium/cli/reboot/validation.py +11 -0
  101. lium_io-0.0.1/lium/cli/rm/__init__.py +5 -0
  102. lium_io-0.0.1/lium/cli/rm/actions.py +50 -0
  103. lium_io-0.0.1/lium/cli/rm/command.py +59 -0
  104. lium_io-0.0.1/lium/cli/rm/display.py +113 -0
  105. lium_io-0.0.1/lium/cli/rm/parsing.py +149 -0
  106. lium_io-0.0.1/lium/cli/rm/validation.py +19 -0
  107. lium_io-0.0.1/lium/cli/rsync/__init__.py +5 -0
  108. lium_io-0.0.1/lium/cli/rsync/actions.py +49 -0
  109. lium_io-0.0.1/lium/cli/rsync/command.py +59 -0
  110. lium_io-0.0.1/lium/cli/rsync/parsing.py +34 -0
  111. lium_io-0.0.1/lium/cli/rsync/validation.py +19 -0
  112. lium_io-0.0.1/lium/cli/schedules/__init__.py +21 -0
  113. lium_io-0.0.1/lium/cli/schedules/display.py +82 -0
  114. lium_io-0.0.1/lium/cli/schedules/list/command.py +29 -0
  115. lium_io-0.0.1/lium/cli/schedules/rm/actions.py +28 -0
  116. lium_io-0.0.1/lium/cli/schedules/rm/command.py +49 -0
  117. lium_io-0.0.1/lium/cli/schedules/rm/parsing.py +30 -0
  118. lium_io-0.0.1/lium/cli/schedules/rm/validation.py +10 -0
  119. lium_io-0.0.1/lium/cli/scp/__init__.py +5 -0
  120. lium_io-0.0.1/lium/cli/scp/actions.py +46 -0
  121. lium_io-0.0.1/lium/cli/scp/command.py +89 -0
  122. lium_io-0.0.1/lium/cli/scp/parsing.py +73 -0
  123. lium_io-0.0.1/lium/cli/scp/validation.py +19 -0
  124. lium_io-0.0.1/lium/cli/settings.py +218 -0
  125. lium_io-0.0.1/lium/cli/ssh/__init__.py +5 -0
  126. lium_io-0.0.1/lium/cli/ssh/actions.py +37 -0
  127. lium_io-0.0.1/lium/cli/ssh/command.py +105 -0
  128. lium_io-0.0.1/lium/cli/ssh/parsing.py +26 -0
  129. lium_io-0.0.1/lium/cli/ssh/validation.py +14 -0
  130. lium_io-0.0.1/lium/cli/templates/__init__.py +5 -0
  131. lium_io-0.0.1/lium/cli/templates/actions.py +19 -0
  132. lium_io-0.0.1/lium/cli/templates/command.py +41 -0
  133. lium_io-0.0.1/lium/cli/templates/display.py +47 -0
  134. lium_io-0.0.1/lium/cli/theme/__init__.py +5 -0
  135. lium_io-0.0.1/lium/cli/theme/actions.py +47 -0
  136. lium_io-0.0.1/lium/cli/theme/command.py +23 -0
  137. lium_io-0.0.1/lium/cli/themed_console.py +149 -0
  138. lium_io-0.0.1/lium/cli/themes.json +26 -0
  139. lium_io-0.0.1/lium/cli/ui.py +172 -0
  140. lium_io-0.0.1/lium/cli/up/__init__.py +3 -0
  141. lium_io-0.0.1/lium/cli/up/actions.py +266 -0
  142. lium_io-0.0.1/lium/cli/up/command.py +227 -0
  143. lium_io-0.0.1/lium/cli/up/parsing.py +162 -0
  144. lium_io-0.0.1/lium/cli/up/validation.py +15 -0
  145. lium_io-0.0.1/lium/cli/update/__init__.py +5 -0
  146. lium_io-0.0.1/lium/cli/update/actions.py +44 -0
  147. lium_io-0.0.1/lium/cli/update/command.py +66 -0
  148. lium_io-0.0.1/lium/cli/update/parsing.py +23 -0
  149. lium_io-0.0.1/lium/cli/update/validation.py +15 -0
  150. lium_io-0.0.1/lium/cli/utils.py +769 -0
  151. lium_io-0.0.1/lium/cli/volumes/__init__.py +22 -0
  152. lium_io-0.0.1/lium/cli/volumes/display.py +66 -0
  153. lium_io-0.0.1/lium/cli/volumes/list/actions.py +16 -0
  154. lium_io-0.0.1/lium/cli/volumes/list/command.py +40 -0
  155. lium_io-0.0.1/lium/cli/volumes/new/actions.py +18 -0
  156. lium_io-0.0.1/lium/cli/volumes/new/command.py +27 -0
  157. lium_io-0.0.1/lium/cli/volumes/rm/actions.py +27 -0
  158. lium_io-0.0.1/lium/cli/volumes/rm/command.py +58 -0
  159. lium_io-0.0.1/lium/cli/volumes/rm/parsing.py +17 -0
  160. lium_io-0.0.1/lium/cli/volumes/rm/validation.py +7 -0
  161. lium_io-0.0.1/lium/sdk/__init__.py +37 -0
  162. lium_io-0.0.1/lium/sdk/client.py +1316 -0
  163. lium_io-0.0.1/lium/sdk/config.py +58 -0
  164. lium_io-0.0.1/lium/sdk/decorators.py +200 -0
  165. lium_io-0.0.1/lium/sdk/exceptions.py +29 -0
  166. lium_io-0.0.1/lium/sdk/models.py +131 -0
  167. lium_io-0.0.1/lium/sdk/utils.py +94 -0
  168. lium_io-0.0.1/pyproject.toml +68 -0
  169. lium_io-0.0.1/test/Dockerfile +19 -0
@@ -0,0 +1,56 @@
1
+ name: Build and Publish Python Package
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: 'Version to release'
8
+ required: true
9
+ type: string
10
+
11
+ jobs:
12
+ build:
13
+ name: Build Python distribution
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v4
20
+ with:
21
+ python-version: '3.10'
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install setuptools wheel twine build toml
27
+
28
+ - name: Build package
29
+ run: python -m build --sdist --wheel --outdir dist/
30
+
31
+ - name: Upload artifact
32
+ uses: actions/upload-artifact@v4
33
+ with:
34
+ name: dist
35
+ path: dist/
36
+
37
+ approve-and-publish:
38
+ needs: build
39
+ runs-on: ubuntu-latest
40
+ environment: release
41
+ permissions:
42
+ contents: read
43
+ id-token: write
44
+
45
+ steps:
46
+ - name: Download artifact
47
+ uses: actions/download-artifact@v4
48
+ with:
49
+ name: dist
50
+ path: dist/
51
+
52
+ - name: Publish package distributions to PyPI
53
+ uses: pypa/gh-action-pypi-publish@release/v1
54
+ with:
55
+ verbose: true
56
+ print-hash: true
@@ -0,0 +1,181 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+
110
+ # pdm
111
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
112
+ #pdm.lock
113
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
114
+ # in version control.
115
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
116
+ .pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121
+ __pypackages__/
122
+
123
+ # Celery stuff
124
+ celerybeat-schedule
125
+ celerybeat.pid
126
+
127
+ # SageMath parsed files
128
+ *.sage.py
129
+
130
+ # Environments
131
+ .env
132
+ .venv
133
+ env/
134
+ venv/
135
+ ENV/
136
+ env.bak/
137
+ venv.bak/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # PyCharm
164
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
165
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
167
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
168
+ #.idea/
169
+
170
+ # Ruff stuff:
171
+ .ruff_cache/
172
+
173
+ # PyPI configuration file
174
+ .pypirc
175
+
176
+
177
+ notebooks/
178
+
179
+ # Claude Code configuration
180
+ CLAUDE.md
181
+ .python-version
@@ -0,0 +1,15 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.11"
7
+
8
+ python:
9
+ install:
10
+ - method: pip
11
+ path: .
12
+ - requirements: docs/requirements.txt
13
+
14
+ sphinx:
15
+ configuration: docs/conf.py
@@ -0,0 +1,123 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.4.3] - 2025-10-23
9
+
10
+ ### Added
11
+ - `lium reboot` command to reboot pods individually or in batches.
12
+ - `lium scp` downloads via the new `--download / -d` flag with smarter defaults.
13
+
14
+ ### Changed
15
+ - Updated dependency to `lium-sdk` 0.2.12 to access the reboot helper.
16
+
17
+ ## [0.3.0] - 2025-01-23
18
+
19
+ ### Added
20
+ - **GPU Filtering for `lium up`**:
21
+ - `--gpu` option to filter executors by GPU type (e.g., H200, A6000)
22
+ - `-c/--count` option to filter by exact GPU count per pod
23
+ - `--country` option to filter by ISO country code (e.g., US, SG)
24
+ - **Auto-selection with filters** - Automatically selects best executor when filters are provided
25
+ - **Enhanced Pareto frontier** - Prioritizes US location and high bandwidth when prices are equal
26
+ - **Better error messages** - Helpful tips when no executors match filters
27
+ - **Loading indicators** - Shows progress when searching for executors
28
+
29
+ ### Changed
30
+ - **Refactored `up` command** - Cleaner code structure with extracted helper functions
31
+ - **SSH always connects** - Pod creation now always waits and connects via SSH
32
+ - **Consistent behavior** - Both interactive and non-interactive modes auto-connect
33
+ - **Improved executor ranking** - Better selection when multiple executors have same price
34
+
35
+ ### Removed
36
+ - `-w/--wait` option from `up` command - Now always waits and connects
37
+
38
+ ## [0.3.0-beta.1] - 2025-01-17
39
+
40
+ ### Added
41
+ - **New Commands**:
42
+ - `fund` command - Fund accounts with TAO directly from Bittensor wallet
43
+ - `config` command - Manage CLI configuration and settings
44
+ - `rsync` command - Efficient file synchronization with pods
45
+ - `scp` command - Secure file copying to/from pods
46
+ - `theme` command - Customize CLI appearance with automatic OS theme detection
47
+ - **ThemedConsole system** - OS-aware color schemes with light/dark mode auto-detection
48
+ - **Enhanced plugin system** - Better integration for extending CLI functionality
49
+
50
+ ### Changed
51
+ - Improved executor selection storage mechanism
52
+ - Cleaner console output with reduced verbosity
53
+ - Updated `lium-sdk` dependency to version 0.2.4
54
+
55
+ ### Removed
56
+ - Success message from init command for cleaner output
57
+ - Dind column from `ls` output
58
+
59
+ ### Note
60
+ - `image` and `compose` commands temporarily disabled for beta.1, will be included in beta.2
61
+
62
+ ## [0.2.2] - 2025-01-10
63
+
64
+ ### Added
65
+ - `--version` option to display CLI version (reads from pyproject.toml)
66
+
67
+ ### Changed
68
+ - Version is now dynamically read from pyproject.toml for single source of truth
69
+
70
+ ### Removed
71
+ - Deleted unused `lium_cli/` folder - project now uses `cli/` exclusively
72
+
73
+ ## [0.2.1] - 2025-01-10
74
+
75
+ ### Fixed
76
+ - Fixed package structure in pyproject.toml to properly include the `cli` module
77
+ - Resolved ModuleNotFoundError when installing from PyPI
78
+
79
+ ## [0.2.0] - 2025-01-10
80
+
81
+ ### Added
82
+ - **init command** - Interactive setup wizard for first-time users
83
+ - Pareto frontier optimization in `ls` command - shows optimal executors with ★ indicator
84
+ - Index-based executor selection in `up` command - use numbers from previous `ls` output
85
+ - Session storage for executor selection - enables quick selection by index
86
+ - Full-width tables across all commands for better terminal utilization
87
+ - Proper GPU configuration display in `ps` command showing actual GPU types
88
+ - Cost tracking in `ps` command showing spent amount and hourly rate
89
+ - Better error messages guiding users to run `lium init` when API key is missing
90
+
91
+ ### Changed
92
+ - **BREAKING**: Now requires `lium-sdk>=0.2.0` from PyPI (no longer uses git dependency)
93
+ - Improved `ls` command with tighter table design and no units for cleaner display
94
+ - Enhanced `up` command with better template selection and confirmation flow
95
+ - Better `ps` command showing active pods with proper GPU configs and SSH commands
96
+ - Improved `templates` command removing unnecessary ID column and giving more space to tags
97
+ - Cleaner code throughout following PEP conventions
98
+ - All imports organized alphabetically and grouped properly
99
+ - Removed `from __future__ import annotations` (not needed in Python 3.9+)
100
+
101
+ ### Fixed
102
+ - Rich markup issues with version numbers showing as colors
103
+ - SSH command generation missing spaces
104
+ - GPU configuration showing generic "GPU" instead of actual type
105
+ - Template selection colors and display issues
106
+ - Tables not taking full terminal width
107
+ - Various import and type hint improvements
108
+ - Bare except clauses replaced with specific exceptions
109
+
110
+ ### Removed
111
+ - Unnecessary borders and decorations from tables
112
+ - Units (like "Gi") from numeric displays for cleaner look
113
+ - Confusing HUID column from templates display
114
+ - Debug code and trailing whitespace
115
+ - Unused helper functions
116
+
117
+ ## [0.1.1] - Previous Release
118
+
119
+ - Initial release with basic pod management functionality
120
+ - Basic commands: ls, up, ps, exec, ssh, rm, templates
121
+ - Integration with lium-sdk from git
122
+ - Rich terminal UI with tables
123
+ - Basic error handling
lium_io-0.0.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Datura
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.