verda 0.1.0__tar.gz → 0.2.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.
Files changed (40) hide show
  1. verda-0.2.0/PKG-INFO +182 -0
  2. verda-0.2.0/README.md +156 -0
  3. verda-0.2.0/pyproject.toml +89 -0
  4. verda-0.2.0/verda/InferenceClient/__init__.py +3 -0
  5. verda-0.2.0/verda/InferenceClient/inference_client.py +525 -0
  6. verda-0.2.0/verda/__init__.py +22 -0
  7. verda-0.2.0/verda/_version.py +6 -0
  8. verda-0.2.0/verda/authentication/authentication.py +106 -0
  9. verda-0.2.0/verda/balance/__init__.py +0 -0
  10. verda-0.2.0/verda/balance/balance.py +50 -0
  11. verda-0.2.0/verda/constants.py +126 -0
  12. verda-0.2.0/verda/containers/__init__.py +33 -0
  13. verda-0.2.0/verda/containers/containers.py +1110 -0
  14. verda-0.2.0/verda/datacrunch.py +43 -0
  15. verda-0.2.0/verda/exceptions.py +30 -0
  16. verda-0.2.0/verda/helpers.py +17 -0
  17. verda-0.2.0/verda/http_client/__init__.py +0 -0
  18. verda-0.2.0/verda/http_client/http_client.py +246 -0
  19. verda-0.2.0/verda/images/__init__.py +0 -0
  20. verda-0.2.0/verda/images/images.py +88 -0
  21. verda-0.2.0/verda/instance_types/__init__.py +0 -0
  22. verda-0.2.0/verda/instance_types/instance_types.py +67 -0
  23. verda-0.2.0/verda/instances/__init__.py +0 -0
  24. verda-0.2.0/verda/instances/instances.py +260 -0
  25. verda-0.2.0/verda/locations/__init__.py +0 -0
  26. verda-0.2.0/verda/locations/locations.py +13 -0
  27. verda-0.2.0/verda/ssh_keys/__init__.py +0 -0
  28. verda-0.2.0/verda/ssh_keys/ssh_keys.py +109 -0
  29. verda-0.2.0/verda/startup_scripts/__init__.py +0 -0
  30. verda-0.2.0/verda/startup_scripts/startup_scripts.py +110 -0
  31. verda-0.2.0/verda/verda.py +83 -0
  32. verda-0.2.0/verda/volume_types/__init__.py +0 -0
  33. verda-0.2.0/verda/volume_types/volume_types.py +66 -0
  34. verda-0.2.0/verda/volumes/__init__.py +0 -0
  35. verda-0.2.0/verda/volumes/volumes.py +386 -0
  36. verda-0.1.0/PKG-INFO +0 -10
  37. verda-0.1.0/README.md +0 -1
  38. verda-0.1.0/pyproject.toml +0 -14
  39. verda-0.1.0/src/verda/__init__.py +0 -2
  40. /verda-0.1.0/src/verda/py.typed → /verda-0.2.0/verda/authentication/__init__.py +0 -0
verda-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,182 @@
1
+ Metadata-Version: 2.3
2
+ Name: verda
3
+ Version: 0.2.0
4
+ Summary: Official Python SDK for Verda (formerly DataCrunch) Public API
5
+ Author: Verda Cloud Oy
6
+ Author-email: Verda Cloud Oy <info@verda.com>
7
+ Classifier: Development Status :: 5 - Production/Stable
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Natural Language :: English
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Requires-Dist: requests>=2.25.1,<3
19
+ Requires-Dist: dataclasses-json>=0.6.7
20
+ Requires-Python: >=3.10
21
+ Project-URL: Changelog, https://datacrunch-python.readthedocs.io/en/latest/changelog.html
22
+ Project-URL: Documentation, https://datacrunch-python.readthedocs.io/
23
+ Project-URL: Homepage, https://github.com/verda-cloud
24
+ Project-URL: Repository, https://github.com/verda-cloud/sdk-python
25
+ Description-Content-Type: text/markdown
26
+
27
+ # Verda Python SDK
28
+
29
+ [<img src='https://github.com/verda-cloud/sdk-python/workflows/Unit%20Tests/badge.svg'>](https://github.com/verda-cloud/sdk-python/actions?query=workflow%3A%22Unit+Tests%22+branch%3Amaster)
30
+ [<img src='https://github.com/verda-cloud/sdk-python/workflows/Code%20Style/badge.svg'>](https://github.com/verda-cloud/sdk-python/actions?query=workflow%3A%22Code+Style%22+branch%3Amaster)
31
+ [<img src="https://codecov.io/gh/verda-cloud/sdk-python/branch/master/graph/badge.svg?token=5X5KTYSSPK">](https://codecov.io/gh/verda-cloud/sdk-python)
32
+ [<img src='https://readthedocs.org/projects/datacrunch-python/badge/?version=latest'>](https://datacrunch-python.readthedocs.io/en/latest/)
33
+ [<img src='https://img.shields.io/github/license/verda-cloud/sdk-python'>](https://github.com/verda-cloud/sdk-python/blob/master/LICENSE)
34
+ [<img src='https://img.shields.io/pypi/v/verda?logo=python'>](https://pypi.org/project/verda/)
35
+ [<img src='https://img.shields.io/pypi/pyversions/verda'>](https://pypi.org/project/verda/)
36
+
37
+ The official [Verda](https://verda.com) (formerly DataCrunch) Python SDK.
38
+
39
+ The SDK's documentation is available on [ReadTheDocs](https://datacrunch-python.readthedocs.io/en/latest/)
40
+
41
+ Verda Public API documentation [is available here](https://api.datacrunch.io/v1/docs).
42
+
43
+ ## Getting Started - Using the SDK:
44
+
45
+ - Install:
46
+
47
+ ```bash
48
+ # via pip
49
+ pip3 install verda
50
+
51
+ # via uv
52
+ uv add verda
53
+ ```
54
+
55
+ - Generate your client credentials - [instructions in the public API docs](https://api.datacrunch.io/v1/docs#description/quick-start-guide).
56
+
57
+
58
+ - Add your client id and client secret to an environment variable (don't want it to be hardcoded):
59
+
60
+ Linux (bash):
61
+
62
+ ```bash
63
+ export VERDA_CLIENT_ID=YOUR_ID_HERE
64
+ export VERDA_CLIENT_SECRET=YOUR_SECRET_HERE
65
+ ```
66
+
67
+ - To enable sending inference requests from SDK you must generate an inference key - [Instructions on inference authorization](https://docs.verda.com/inference/authorization)
68
+
69
+
70
+ - Add your inference key to an environment variable
71
+
72
+ Linux (bash):
73
+
74
+ ```bash
75
+ export VERDA_INFERENCE_KEY=YOUR_API_KEY_HERE
76
+ ```
77
+
78
+ Other platforms:
79
+ https://en.wikipedia.org/wiki/Environment_variable
80
+
81
+
82
+
83
+ - Example for creating a new instance:
84
+
85
+ ```python
86
+ import os
87
+ from verda import VerdaClient
88
+
89
+ # Get credentials from environment variables
90
+ CLIENT_ID = os.environ.get('VERDA_CLIENT_ID')
91
+ CLIENT_SECRET = os.environ['VERDA_CLIENT_SECRET']
92
+
93
+ # Create client
94
+ verda = VerdaClient(CLIENT_ID, CLIENT_SECRET)
95
+
96
+ # Get all SSH keys
97
+ ssh_keys = [key.id for key in verda.ssh_keys.get()]
98
+
99
+ # Create a new instance
100
+ instance = verda.instances.create(instance_type='1V100.6V',
101
+ image='ubuntu-24.04-cuda-12.8-open-docker',
102
+ ssh_key_ids=ssh_keys,
103
+ hostname='example',
104
+ description='example instance')
105
+
106
+ # Delete instance
107
+ verda.instances.action(instance.id, verda.constants.instance_actions.DELETE)
108
+ ```
109
+
110
+ More examples can be found in the `/examples` folder or in the [documentation](https://datacrunch-python.readthedocs.io/en/latest/).
111
+
112
+ ## Development
113
+
114
+ ### Set up the local development environment
115
+
116
+ Prerequisite: install [`uv`](https://docs.astral.sh/uv/).
117
+
118
+ Clone the repository, create local environment and install dependencies:
119
+
120
+ ```bash
121
+ git clone git@github.com:verda-cloud/sdk-python.git
122
+ cd sdk-python
123
+ uv sync
124
+ ```
125
+
126
+ ### Run Tests
127
+
128
+ - Execute all tests
129
+
130
+ ```bash
131
+ uv run pytest
132
+ ```
133
+
134
+ - Execute a single test file
135
+
136
+ ```bash
137
+ uv run pytest tests/unit_tests/test_file.py
138
+ ```
139
+
140
+ ### Local Manual Testing
141
+
142
+ Create a file in the root directory of the project:
143
+
144
+ ```python
145
+ # example.py
146
+ from verda.verda import VerdaClient
147
+
148
+ CLIENT_SECRET = 'secret'
149
+ CLIENT_ID = 'your-id'
150
+
151
+ # Create client
152
+ verda = VerdaClient(CLIENT_ID, CLIENT_SECRET, base_url='http://localhost:3001/v1')
153
+ ```
154
+
155
+ Run it:
156
+
157
+ ```bash
158
+ uv run python example.py
159
+ ```
160
+
161
+ ### Generating the documentation
162
+
163
+ If added a new service, create a documentation template under api/services for that service.
164
+
165
+ ```bash
166
+ cd docs
167
+ make html
168
+ ```
169
+
170
+ ### Code style
171
+
172
+ ```bash
173
+ # Lint
174
+ uv run ruff check
175
+
176
+ # Format code
177
+ uv run ruff format
178
+ ```
179
+
180
+ ## Contact
181
+
182
+ You can [contact us here](https://verda.com/contact), or open an issue in the repo.
verda-0.2.0/README.md ADDED
@@ -0,0 +1,156 @@
1
+ # Verda Python SDK
2
+
3
+ [<img src='https://github.com/verda-cloud/sdk-python/workflows/Unit%20Tests/badge.svg'>](https://github.com/verda-cloud/sdk-python/actions?query=workflow%3A%22Unit+Tests%22+branch%3Amaster)
4
+ [<img src='https://github.com/verda-cloud/sdk-python/workflows/Code%20Style/badge.svg'>](https://github.com/verda-cloud/sdk-python/actions?query=workflow%3A%22Code+Style%22+branch%3Amaster)
5
+ [<img src="https://codecov.io/gh/verda-cloud/sdk-python/branch/master/graph/badge.svg?token=5X5KTYSSPK">](https://codecov.io/gh/verda-cloud/sdk-python)
6
+ [<img src='https://readthedocs.org/projects/datacrunch-python/badge/?version=latest'>](https://datacrunch-python.readthedocs.io/en/latest/)
7
+ [<img src='https://img.shields.io/github/license/verda-cloud/sdk-python'>](https://github.com/verda-cloud/sdk-python/blob/master/LICENSE)
8
+ [<img src='https://img.shields.io/pypi/v/verda?logo=python'>](https://pypi.org/project/verda/)
9
+ [<img src='https://img.shields.io/pypi/pyversions/verda'>](https://pypi.org/project/verda/)
10
+
11
+ The official [Verda](https://verda.com) (formerly DataCrunch) Python SDK.
12
+
13
+ The SDK's documentation is available on [ReadTheDocs](https://datacrunch-python.readthedocs.io/en/latest/)
14
+
15
+ Verda Public API documentation [is available here](https://api.datacrunch.io/v1/docs).
16
+
17
+ ## Getting Started - Using the SDK:
18
+
19
+ - Install:
20
+
21
+ ```bash
22
+ # via pip
23
+ pip3 install verda
24
+
25
+ # via uv
26
+ uv add verda
27
+ ```
28
+
29
+ - Generate your client credentials - [instructions in the public API docs](https://api.datacrunch.io/v1/docs#description/quick-start-guide).
30
+
31
+
32
+ - Add your client id and client secret to an environment variable (don't want it to be hardcoded):
33
+
34
+ Linux (bash):
35
+
36
+ ```bash
37
+ export VERDA_CLIENT_ID=YOUR_ID_HERE
38
+ export VERDA_CLIENT_SECRET=YOUR_SECRET_HERE
39
+ ```
40
+
41
+ - To enable sending inference requests from SDK you must generate an inference key - [Instructions on inference authorization](https://docs.verda.com/inference/authorization)
42
+
43
+
44
+ - Add your inference key to an environment variable
45
+
46
+ Linux (bash):
47
+
48
+ ```bash
49
+ export VERDA_INFERENCE_KEY=YOUR_API_KEY_HERE
50
+ ```
51
+
52
+ Other platforms:
53
+ https://en.wikipedia.org/wiki/Environment_variable
54
+
55
+
56
+
57
+ - Example for creating a new instance:
58
+
59
+ ```python
60
+ import os
61
+ from verda import VerdaClient
62
+
63
+ # Get credentials from environment variables
64
+ CLIENT_ID = os.environ.get('VERDA_CLIENT_ID')
65
+ CLIENT_SECRET = os.environ['VERDA_CLIENT_SECRET']
66
+
67
+ # Create client
68
+ verda = VerdaClient(CLIENT_ID, CLIENT_SECRET)
69
+
70
+ # Get all SSH keys
71
+ ssh_keys = [key.id for key in verda.ssh_keys.get()]
72
+
73
+ # Create a new instance
74
+ instance = verda.instances.create(instance_type='1V100.6V',
75
+ image='ubuntu-24.04-cuda-12.8-open-docker',
76
+ ssh_key_ids=ssh_keys,
77
+ hostname='example',
78
+ description='example instance')
79
+
80
+ # Delete instance
81
+ verda.instances.action(instance.id, verda.constants.instance_actions.DELETE)
82
+ ```
83
+
84
+ More examples can be found in the `/examples` folder or in the [documentation](https://datacrunch-python.readthedocs.io/en/latest/).
85
+
86
+ ## Development
87
+
88
+ ### Set up the local development environment
89
+
90
+ Prerequisite: install [`uv`](https://docs.astral.sh/uv/).
91
+
92
+ Clone the repository, create local environment and install dependencies:
93
+
94
+ ```bash
95
+ git clone git@github.com:verda-cloud/sdk-python.git
96
+ cd sdk-python
97
+ uv sync
98
+ ```
99
+
100
+ ### Run Tests
101
+
102
+ - Execute all tests
103
+
104
+ ```bash
105
+ uv run pytest
106
+ ```
107
+
108
+ - Execute a single test file
109
+
110
+ ```bash
111
+ uv run pytest tests/unit_tests/test_file.py
112
+ ```
113
+
114
+ ### Local Manual Testing
115
+
116
+ Create a file in the root directory of the project:
117
+
118
+ ```python
119
+ # example.py
120
+ from verda.verda import VerdaClient
121
+
122
+ CLIENT_SECRET = 'secret'
123
+ CLIENT_ID = 'your-id'
124
+
125
+ # Create client
126
+ verda = VerdaClient(CLIENT_ID, CLIENT_SECRET, base_url='http://localhost:3001/v1')
127
+ ```
128
+
129
+ Run it:
130
+
131
+ ```bash
132
+ uv run python example.py
133
+ ```
134
+
135
+ ### Generating the documentation
136
+
137
+ If added a new service, create a documentation template under api/services for that service.
138
+
139
+ ```bash
140
+ cd docs
141
+ make html
142
+ ```
143
+
144
+ ### Code style
145
+
146
+ ```bash
147
+ # Lint
148
+ uv run ruff check
149
+
150
+ # Format code
151
+ uv run ruff format
152
+ ```
153
+
154
+ ## Contact
155
+
156
+ You can [contact us here](https://verda.com/contact), or open an issue in the repo.
@@ -0,0 +1,89 @@
1
+ [project]
2
+ name = "verda"
3
+ version = "0.2.0"
4
+ description = "Official Python SDK for Verda (formerly DataCrunch) Public API"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+
8
+ authors = [{ name = "Verda Cloud Oy", email = "info@verda.com" }]
9
+
10
+ classifiers = [
11
+ "Development Status :: 5 - Production/Stable",
12
+ "Intended Audience :: Developers",
13
+ "License :: OSI Approved :: MIT License",
14
+ "Natural Language :: English",
15
+ "Operating System :: OS Independent",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Programming Language :: Python :: 3.13",
21
+ "Programming Language :: Python :: 3.14",
22
+ ]
23
+
24
+ dependencies = ["requests>=2.25.1,<3", "dataclasses_json>=0.6.7"]
25
+
26
+ [dependency-groups]
27
+ dev = [
28
+ "pytest-cov>=2.10.1,<3",
29
+ "pytest-responses>=0.4.0,<1",
30
+ "pytest>=8.1,<9",
31
+ "python-dotenv>=1.1.1",
32
+ "responses>=0.12.1,<1",
33
+ "ruff>=0.14.2",
34
+ ]
35
+
36
+ [project.urls]
37
+ Homepage = "https://github.com/verda-cloud"
38
+ Documentation = "https://datacrunch-python.readthedocs.io/"
39
+ Repository = "https://github.com/verda-cloud/sdk-python"
40
+ Changelog = "https://datacrunch-python.readthedocs.io/en/latest/changelog.html"
41
+
42
+ [build-system]
43
+ requires = ["uv_build>=0.9.5,<0.10.0"]
44
+ build-backend = "uv_build"
45
+
46
+ [tool.uv.build-backend]
47
+ module-name = "verda"
48
+ module-root = ""
49
+
50
+ [tool.ruff]
51
+ line-length = 100
52
+
53
+ [tool.ruff.lint]
54
+ # https://docs.astral.sh/ruff/rules/
55
+ select = [
56
+ # default rules, via https://docs.astral.sh/ruff/settings/#lint_extend-select
57
+ "E4", "E7", "E9", "F",
58
+ # comprehensions
59
+ "C4",
60
+ # sort imports
61
+ "I",
62
+ # pytest
63
+ "PT",
64
+ # bugbear
65
+ "B",
66
+ # upgrade to new python syntax
67
+ "UP",
68
+ # pydocstyle
69
+ "D",
70
+ # builtins
71
+ "A",
72
+ # unused args
73
+ "ARG",
74
+ # Ruff
75
+ "RUF",
76
+ ]
77
+ flake8-builtins.ignorelist = ["id", "type"]
78
+ pydocstyle.convention = "google"
79
+
80
+ # TODO(shamrin) stop ignoring these errors
81
+ ignore = ["F401", "B006", "D100", "D105", "D107"]
82
+
83
+ [tool.ruff.lint.per-file-ignores]
84
+ "{tests,examples}/*" = ["D"]
85
+ "__init__.py" = ["D104"]
86
+
87
+ [tool.ruff.format]
88
+ quote-style = "single"
89
+ docstring-code-format = true
@@ -0,0 +1,3 @@
1
+ from .inference_client import InferenceClient, InferenceResponse
2
+
3
+ __all__ = ['InferenceClient', 'InferenceResponse']