cecil 0.0.24__py3-none-any.whl → 0.0.26__py3-none-any.whl
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.
Potentially problematic release.
This version of cecil might be problematic. Click here for more details.
- cecil/client.py +47 -0
- cecil/errors.py +11 -0
- cecil/version.py +1 -1
- {cecil-0.0.24.dist-info → cecil-0.0.26.dist-info}/METADATA +8 -5
- cecil-0.0.26.dist-info/RECORD +10 -0
- cecil-0.0.24.dist-info/RECORD +0 -10
- {cecil-0.0.24.dist-info → cecil-0.0.26.dist-info}/WHEEL +0 -0
- {cecil-0.0.24.dist-info → cecil-0.0.26.dist-info}/licenses/LICENSE.txt +0 -0
cecil/client.py
CHANGED
|
@@ -9,10 +9,12 @@ from pydantic import BaseModel
|
|
|
9
9
|
from requests import auth
|
|
10
10
|
from cryptography.hazmat.primitives import serialization
|
|
11
11
|
from typing import Dict, List, Optional
|
|
12
|
+
from warnings import warn
|
|
12
13
|
|
|
13
14
|
from .errors import (
|
|
14
15
|
Error,
|
|
15
16
|
_handle_bad_request,
|
|
17
|
+
_handle_method_not_allowed,
|
|
16
18
|
_handle_not_found,
|
|
17
19
|
_handle_too_many_requests,
|
|
18
20
|
_handle_unprocessable_entity,
|
|
@@ -87,9 +89,34 @@ class Client:
|
|
|
87
89
|
metadata = DataRequestMetadata(**res)
|
|
88
90
|
return load_xarray(metadata)
|
|
89
91
|
|
|
92
|
+
def load_dataframe(self, data_request_id: str) -> pd.DataFrame:
|
|
93
|
+
|
|
94
|
+
data_request = self.get_data_request(data_request_id)
|
|
95
|
+
|
|
96
|
+
try:
|
|
97
|
+
secure_view = {
|
|
98
|
+
"528f54b8-1cb9-412c-a646-30a55ddb7cbd": "data_request_db.ibat.kba",
|
|
99
|
+
"f30f2125-c472-43c7-85c8-52f0d4b1d160": "data_request_db.ibat.redlist",
|
|
100
|
+
"c1ee0d62-95ef-49b1-adf1-6a5a933d726d": "data_request_db.ibat.wdpa",
|
|
101
|
+
}[data_request.dataset_id]
|
|
102
|
+
except KeyError:
|
|
103
|
+
raise Error(
|
|
104
|
+
"method not allowed",
|
|
105
|
+
{"message": "load_dataframe() is not supported for raster datasets."},
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
return self._query(
|
|
109
|
+
f"select * from {secure_view} where data_request_id = '{data_request_id}'"
|
|
110
|
+
)
|
|
111
|
+
|
|
90
112
|
def create_transformation(
|
|
91
113
|
self, data_request_id: str, crs: str, spatial_resolution: float
|
|
92
114
|
) -> Transformation:
|
|
115
|
+
warn(
|
|
116
|
+
"create_transformation() is deprecated, refer to https://github.com/cecilearth/examples",
|
|
117
|
+
DeprecationWarning,
|
|
118
|
+
stacklevel=2,
|
|
119
|
+
)
|
|
93
120
|
res = self._post(
|
|
94
121
|
url="/v0/transformations",
|
|
95
122
|
model=TransformationCreate(
|
|
@@ -101,14 +128,32 @@ class Client:
|
|
|
101
128
|
return Transformation(**res)
|
|
102
129
|
|
|
103
130
|
def get_transformation(self, id: str) -> Transformation:
|
|
131
|
+
warn(
|
|
132
|
+
"get_transformation() is deprecated.",
|
|
133
|
+
DeprecationWarning,
|
|
134
|
+
stacklevel=2,
|
|
135
|
+
)
|
|
104
136
|
res = self._get(url=f"/v0/transformations/{id}")
|
|
105
137
|
return Transformation(**res)
|
|
106
138
|
|
|
107
139
|
def list_transformations(self) -> List[Transformation]:
|
|
140
|
+
warn(
|
|
141
|
+
"list_transformations() is deprecated.",
|
|
142
|
+
DeprecationWarning,
|
|
143
|
+
stacklevel=2,
|
|
144
|
+
)
|
|
108
145
|
res = self._get(url="/v0/transformations")
|
|
109
146
|
return [Transformation(**record) for record in res["records"]]
|
|
110
147
|
|
|
111
148
|
def query(self, sql: str) -> pd.DataFrame:
|
|
149
|
+
warn(
|
|
150
|
+
"query() is deprecated, use load_xarray() or load_dataframe() instead.",
|
|
151
|
+
DeprecationWarning,
|
|
152
|
+
stacklevel=2,
|
|
153
|
+
)
|
|
154
|
+
return self._query(sql)
|
|
155
|
+
|
|
156
|
+
def _query(self, sql: str) -> pd.DataFrame:
|
|
112
157
|
if self._snowflake_user_creds is None:
|
|
113
158
|
res = self._get(url="/v0/snowflake-user-credentials")
|
|
114
159
|
self._snowflake_user_creds = SnowflakeUserCredentials(**res)
|
|
@@ -212,6 +257,8 @@ class Client:
|
|
|
212
257
|
raise Error("unauthorised")
|
|
213
258
|
case 404:
|
|
214
259
|
_handle_not_found(err.response)
|
|
260
|
+
case 405:
|
|
261
|
+
_handle_method_not_allowed(err.response)
|
|
215
262
|
case 422:
|
|
216
263
|
_handle_unprocessable_entity(err.response)
|
|
217
264
|
case 429:
|
cecil/errors.py
CHANGED
|
@@ -36,6 +36,17 @@ def _handle_bad_request(response):
|
|
|
36
36
|
raise Error("bad request", details)
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
def _handle_method_not_allowed(response):
|
|
40
|
+
if not _is_json(response.text):
|
|
41
|
+
raise Error("method not allowed")
|
|
42
|
+
|
|
43
|
+
details = {}
|
|
44
|
+
for key, value in response.json().items():
|
|
45
|
+
details[_format_json_key(key)] = value
|
|
46
|
+
|
|
47
|
+
raise Error("method not allowed", details)
|
|
48
|
+
|
|
49
|
+
|
|
39
50
|
def _handle_not_found(response):
|
|
40
51
|
if not _is_json(response.text):
|
|
41
52
|
raise Error("resource not found")
|
cecil/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.0.
|
|
1
|
+
__version__ = "0.0.26"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cecil
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.26
|
|
4
4
|
Summary: Python SDK for Cecil Earth
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE.txt
|
|
@@ -8,10 +8,13 @@ Classifier: Development Status :: 4 - Beta
|
|
|
8
8
|
Classifier: License :: OSI Approved :: MIT License
|
|
9
9
|
Classifier: Operating System :: OS Independent
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Requires-Python: >=3.
|
|
12
|
-
Requires-Dist:
|
|
13
|
-
Requires-Dist:
|
|
14
|
-
Requires-Dist:
|
|
11
|
+
Requires-Python: >=3.11
|
|
12
|
+
Requires-Dist: dask==2025.9.1
|
|
13
|
+
Requires-Dist: pydantic<3.0.0,>=2.11.9
|
|
14
|
+
Requires-Dist: requests<3.0.0,>=2.32.5
|
|
15
|
+
Requires-Dist: rioxarray==0.19.0
|
|
16
|
+
Requires-Dist: snowflake-connector-python[pandas]<4.0.0,>=3.17.4
|
|
17
|
+
Requires-Dist: xarray==2025.9.1
|
|
15
18
|
Description-Content-Type: text/markdown
|
|
16
19
|
|
|
17
20
|
# Cecil SDK
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
cecil/__init__.py,sha256=AEcRl73BDSAQe6W0d1PDD87IEcumARtREl7dCVa_YQY,86
|
|
2
|
+
cecil/client.py,sha256=JRTXn6Xc-sHINwUxN6eccpmETWnmkEgQtVp3guk4_h4,9553
|
|
3
|
+
cecil/errors.py,sha256=EnyYvFfU_JWYTTRax58bdwOndri2f-HzbqyzxtoV8uo,2100
|
|
4
|
+
cecil/models.py,sha256=3W892XywxLIZL6TDCHM8_PVRHzR48bJXT5kTV7UU_bY,3509
|
|
5
|
+
cecil/version.py,sha256=Uo7fyxQsD_ez-4T9Di7e8J56WgMQ2DYHGASt3lnRdUY,23
|
|
6
|
+
cecil/xarray.py,sha256=CvqfJ7NBMLLA4jf73ek2ZtV3sj8xOII__5S0_l3KXYI,2161
|
|
7
|
+
cecil-0.0.26.dist-info/METADATA,sha256=8U7ra39gA9Pino-TdyXx0isDW4m3u9LJxiU1geGI8Yg,2800
|
|
8
|
+
cecil-0.0.26.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
9
|
+
cecil-0.0.26.dist-info/licenses/LICENSE.txt,sha256=mUexcmfYx3bG1VIzAdQTOf_NzStYw6-QkKVdUY_d4i4,1066
|
|
10
|
+
cecil-0.0.26.dist-info/RECORD,,
|
cecil-0.0.24.dist-info/RECORD
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
cecil/__init__.py,sha256=AEcRl73BDSAQe6W0d1PDD87IEcumARtREl7dCVa_YQY,86
|
|
2
|
-
cecil/client.py,sha256=KyxrMSZpo1R46r6LIy8vSv5YxONsr8xiM4B0W4AGC_o,7923
|
|
3
|
-
cecil/errors.py,sha256=ZNiSTYH2MgNZ7tNIgV07-Ge3KtmdncfzWiBi9yjURGs,1818
|
|
4
|
-
cecil/models.py,sha256=3W892XywxLIZL6TDCHM8_PVRHzR48bJXT5kTV7UU_bY,3509
|
|
5
|
-
cecil/version.py,sha256=ZQhXtFuXIGDwpCAUqfQWo3IQMf-8Lz9t5nYhJnOYBdI,23
|
|
6
|
-
cecil/xarray.py,sha256=CvqfJ7NBMLLA4jf73ek2ZtV3sj8xOII__5S0_l3KXYI,2161
|
|
7
|
-
cecil-0.0.24.dist-info/METADATA,sha256=rWLY1mb0eD52cUBkiofgC2ojdVVtjJ9twSo8KoQWqx4,2659
|
|
8
|
-
cecil-0.0.24.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
9
|
-
cecil-0.0.24.dist-info/licenses/LICENSE.txt,sha256=mUexcmfYx3bG1VIzAdQTOf_NzStYw6-QkKVdUY_d4i4,1066
|
|
10
|
-
cecil-0.0.24.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|