diff --git a/README.md b/README.md index 8d26112..d8ef4d3 100644 --- a/README.md +++ b/README.md @@ -20,5 +20,5 @@ More Details at [ShroomDK](https://sdk.flipsidecrypto.xyz) | Language | Version | Status | | ------------------------ | ------- | ---------------------------------------------------------------------------------- | | ✅ [JS/TypeScript](./js) | 1.1.1 | ![tests](https://github.com/flipsidecrypto/sdk/actions/workflows/ci_js.yml/badge.svg) | -| ✅ [Python](./python/) | 1.0.1 | [![tests](https://github.com/FlipsideCrypto/sdk/actions/workflows/ci_python.yml/badge.svg)](https://github.com/FlipsideCrypto/sdk/actions/workflows/ci_python.yml) | +| ✅ [Python](./python/) | 1.0.2 | [![tests](https://github.com/FlipsideCrypto/sdk/actions/workflows/ci_python.yml/badge.svg)](https://github.com/FlipsideCrypto/sdk/actions/workflows/ci_python.yml) | | ✅ [R](./r/shroomDK/) | 0.1.1 | available on CRAN | diff --git a/python/VERSION b/python/VERSION index 7f20734..e6d5cb8 100644 --- a/python/VERSION +++ b/python/VERSION @@ -1 +1 @@ -1.0.1 \ No newline at end of file +1.0.2 \ No newline at end of file diff --git a/python/shroomdk/models/query.py b/python/shroomdk/models/query.py index d831f25..eec0096 100644 --- a/python/shroomdk/models/query.py +++ b/python/shroomdk/models/query.py @@ -5,12 +5,24 @@ from pydantic import BaseModel, Field class Query(BaseModel): sql: str = Field(None, description="SQL query to execute") - ttl_minutes: Optional[int] = Field(None, description="The number of minutes to cache the query results") - timeout_minutes: Optional[int] = Field(None, description="The number of minutes to timeout the query") - retry_interval_seconds: Optional[Union[int, float]] = Field(1, description="The number of seconds to use between retries") + ttl_minutes: Optional[int] = Field( + None, description="The number of minutes to cache the query results" + ) + timeout_minutes: Optional[int] = Field( + None, description="The number of minutes to timeout the query" + ) + retry_interval_seconds: Optional[Union[int, float]] = Field( + 1, description="The number of seconds to use between retries" + ) cached: Optional[bool] = Field( None, description="An override on the cache. A value of true will Re-Execute the query.", ) page_size: int = Field(None, description="The number of results to return per page") page_number: int = Field(None, description="The page number to return") + sdk_package: Optional[str] = Field( + None, description="The SDK package used for the query" + ) + sdk_version: Optional[str] = Field( + None, description="The SDK version used for the query" + ) diff --git a/python/shroomdk/shroomdk.py b/python/shroomdk/shroomdk.py index be79fab..8cbff4d 100644 --- a/python/shroomdk/shroomdk.py +++ b/python/shroomdk/shroomdk.py @@ -4,6 +4,9 @@ from shroomdk.models import Query API_BASE_URL = "https://api.flipsidecrypto.com" +SDK_VERSION = "1.0.2" +SDK_PACKAGE = "python" + class ShroomDK(object): def __init__(self, api_key: str, api_base_url: str = API_BASE_URL): @@ -30,5 +33,7 @@ class ShroomDK(object): page_size=page_size, page_number=page_number, cached=cached, + sdk_package=SDK_PACKAGE, + sdk_version=SDK_VERSION, ) ) diff --git a/python/shroomdk/tests/integrations/query_integration/test_query_integration.py b/python/shroomdk/tests/integrations/query_integration/test_query_integration.py index 0221ce0..7fb5888 100644 --- a/python/shroomdk/tests/integrations/query_integration/test_query_integration.py +++ b/python/shroomdk/tests/integrations/query_integration/test_query_integration.py @@ -13,6 +13,9 @@ from shroomdk.integrations.query_integration.query_integration import DEFAULTS from shroomdk.models import Query, QueryStatus from shroomdk.models.api import QueryResultJson +SDK_VERSION = "1.0.2" +SDK_PACKAGE = "python" + def get_api(): return API("https://api.flipsidecrypto.xyz", "api_key") @@ -22,17 +25,19 @@ def test_query_defaults(): qi = QueryIntegration(get_api()) # Test that the defaults are semi-overridden - q = Query(sql="", ttl_minutes=5, page_number=5, page_size=10) # type: ignore + q = Query(sql="", ttl_minutes=5, page_number=5, page_size=10, sdk_package=SDK_PACKAGE, sdk_version=SDK_VERSION) # type: ignore next_q = qi._set_query_defaults(q) assert next_q.page_number == 5 assert next_q.page_size == 10 assert next_q.ttl_minutes == 5 + assert next_q.sdk_package == SDK_PACKAGE + assert next_q.sdk_version == SDK_VERSION assert next_q.cached == DEFAULTS.cached assert next_q.timeout_minutes == DEFAULTS.timeout_minutes # Test that the defaults are not overridden - q = Query(sql="") # type: ignore + q = Query(sql="", sdk_package=SDK_PACKAGE, sdk_version=SDK_VERSION) # type: ignore next_q = qi._set_query_defaults(q) assert next_q.page_number == DEFAULTS.page_number @@ -40,6 +45,8 @@ def test_query_defaults(): assert next_q.ttl_minutes == DEFAULTS.ttl_minutes assert next_q.cached == DEFAULTS.cached assert next_q.timeout_minutes == DEFAULTS.timeout_minutes + assert next_q.sdk_package == SDK_PACKAGE + assert next_q.sdk_version == SDK_VERSION def test_run_failed_to_create_query(requests_mock): @@ -47,7 +54,7 @@ def test_run_failed_to_create_query(requests_mock): qi = QueryIntegration(api) # Test 400 error - q = Query(sql="", ttl_minutes=5, page_number=5, page_size=10) # type: ignore + q = Query(sql="", ttl_minutes=5, page_number=5, page_size=10, sdk_package=SDK_PACKAGE, sdk_version=SDK_VERSION) # type: ignore requests_mock.post( api.get_url("queries"), text=json.dumps({"errors": "user_error"}), @@ -103,7 +110,9 @@ def test_get_query_result_server_errors(requests_mock): query_id = "test_query_id" # User Error - requests_mock.get(api.get_url(f"queries/{query_id}"), status_code=400, reason="user_error") + requests_mock.get( + api.get_url(f"queries/{query_id}"), status_code=400, reason="user_error" + ) try: qi._get_query_results("test_query_id") @@ -111,7 +120,9 @@ def test_get_query_result_server_errors(requests_mock): assert type(e) == UserError # Server Error - requests_mock.get(api.get_url(f"queries/{query_id}"), status_code=500, reason="server error") + requests_mock.get( + api.get_url(f"queries/{query_id}"), status_code=500, reason="server error" + ) try: qi._get_query_results("test_query_id")