Skip to content

Commit 7274252

Browse files
committed
--wip-- [skip ci]
1 parent 30ccd74 commit 7274252

File tree

3 files changed

+37
-41
lines changed

3 files changed

+37
-41
lines changed

Cargo.lock

Lines changed: 11 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/duckdb.rs

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,22 @@ use pyo3::{
99
IntoPyObjectExt,
1010
};
1111
use pyo3_arrow::PyTable;
12-
use stac_duckdb::{Client, Config};
13-
use std::sync::Mutex;
12+
use stac_duckdb::Client;
13+
use std::{path::PathBuf, sync::Mutex};
1414

1515
#[pyclass(frozen)]
1616
pub struct DuckdbClient(Mutex<Client>);
1717

1818
#[pymethods]
1919
impl DuckdbClient {
2020
#[new]
21-
#[pyo3(signature = (*, use_s3_credential_chain=false, use_azure_credential_chain=false, use_httpfs=false, use_hive_partitioning=false, install_extensions=true, custom_extension_repository=None, extension_directory=None))]
21+
#[pyo3(signature = (*, use_hive_partitioning=false, extension_directory=None, install_extensions=true))]
2222
fn new(
23-
use_s3_credential_chain: bool,
24-
use_azure_credential_chain: bool,
25-
use_httpfs: bool,
2623
use_hive_partitioning: bool,
24+
extension_directory: Option<PathBuf>,
2725
install_extensions: bool,
28-
custom_extension_repository: Option<String>,
29-
extension_directory: Option<String>,
3026
) -> Result<DuckdbClient> {
31-
let config = Config {
32-
use_s3_credential_chain,
33-
use_azure_credential_chain,
34-
use_httpfs,
35-
use_hive_partitioning,
36-
install_extensions,
37-
custom_extension_repository,
38-
extension_directory,
39-
convert_wkb: true,
40-
};
41-
let client = Client::with_config(config)?;
42-
Ok(DuckdbClient(Mutex::new(client)))
27+
todo!()
4328
}
4429

4530
#[pyo3(signature = (href, *, intersects=None, ids=None, collections=None, limit=None, bbox=None, datetime=None, include=None, exclude=None, sortby=None, filter=None, query=None, **kwargs))]
@@ -123,10 +108,11 @@ impl DuckdbClient {
123108
.0
124109
.lock()
125110
.map_err(|err| PyException::new_err(err.to_string()))?;
126-
let convert_wkb = client.config.convert_wkb;
127-
client.config.convert_wkb = false;
111+
// FIXME this is awkward
112+
let convert_wkb = client.convert_wkb;
113+
client.convert_wkb = false;
128114
let result = client.search_to_arrow(&href, search);
129-
client.config.convert_wkb = convert_wkb;
115+
client.convert_wkb = convert_wkb;
130116
result?
131117
};
132118
if record_batches.is_empty() {

tests/test_duckdb.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from pathlib import Path
2+
13
import pytest
2-
import rustac
34
from geopandas import GeoDataFrame
4-
from rustac import DuckdbClient
5+
6+
import rustac
7+
from rustac import DuckdbClient, RustacError
58

69

710
@pytest.fixture
@@ -27,11 +30,6 @@ def test_get_collections(client: DuckdbClient) -> None:
2730
assert len(collections) == 1
2831

2932

30-
@pytest.mark.skip("slow")
31-
def test_init_with_config() -> None:
32-
DuckdbClient(use_s3_credential_chain=True, use_hive_partitioning=True)
33-
34-
3533
def test_search_to_arrow(client: DuckdbClient) -> None:
3634
pytest.importorskip("arro3.core")
3735
table = client.search_to_arrow("data/100-sentinel-2-items.parquet")
@@ -40,3 +38,15 @@ def test_search_to_arrow(client: DuckdbClient) -> None:
4038
data_frame_table = data_frame.to_arrow()
4139
item_collection = rustac.from_arrow(data_frame_table)
4240
assert len(item_collection["features"]) == 100
41+
42+
43+
def test_custom_extension_directory() -> None:
44+
extension_directory = Path(__file__).parent / "duckdb-extensions"
45+
client = DuckdbClient(extension_directory=extension_directory)
46+
# Search to ensure we trigger everything
47+
client.search("data/100-sentinel-2-items.parquet")
48+
49+
50+
def test_no_install(tmp_path: Path) -> None:
51+
with pytest.raises(RustacError):
52+
DuckdbClient(extension_directory=tmp_path, install_extensions=False)

0 commit comments

Comments
 (0)