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 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.24"
1
+ __version__ = "0.0.26"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cecil
3
- Version: 0.0.24
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.8
12
- Requires-Dist: pydantic
13
- Requires-Dist: requests
14
- Requires-Dist: snowflake-connector-python[pandas]
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,,
@@ -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