mirror of
https://github.com/FlipsideCrypto/sdk.git
synced 2026-02-06 10:46:43 +00:00
Merge branch 'main' of https://github.com/FlipsideCrypto/sdk
This commit is contained in:
commit
a660fb20f8
@ -19,6 +19,6 @@ Get your [free API key here](https://flipsidecrypto.xyz/account/api-keys)
|
||||
|
||||
| Language | Version | Status |
|
||||
| ------------------------ | ------- | ---------------------------------------------------------------------------------- |
|
||||
| ✅ [Python](./python/) | 2.0.3 | [](https://github.com/FlipsideCrypto/sdk/actions/workflows/ci_python.yml) |
|
||||
| ✅ [Python](./python/) | 2.0.4 | [](https://github.com/FlipsideCrypto/sdk/actions/workflows/ci_python.yml) |
|
||||
| ✅ [JS/TypeScript](./js) | Under Construction | |
|
||||
| ✅ [R](./r/shroomDK/) | Under Construction | |
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -38,25 +38,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ApiError",
|
||||
"evalue": "Unauthorized: message=Invalid API Key., code=401",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[0;31mApiError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb Cell 5\u001b[0m in \u001b[0;36m<cell line: 8>\u001b[0;34m()\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=4'>5</a>\u001b[0m sdk \u001b[39m=\u001b[39m Flipside(YOUR_API_KEY)\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=6'>7</a>\u001b[0m \u001b[39m# Run a query\u001b[39;00m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=7'>8</a>\u001b[0m query_result_set \u001b[39m=\u001b[39m sdk\u001b[39m.\u001b[39;49mquery(\u001b[39m\"\"\"\u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=8'>9</a>\u001b[0m \u001b[39m SELECT * FROM ethereum.core.ez_eth_transfers \u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=9'>10</a>\u001b[0m \u001b[39m WHERE \u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=10'>11</a>\u001b[0m \u001b[39m block_timestamp > GETDATE() - interval\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m90 days\u001b[39;49m\u001b[39m'\u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=11'>12</a>\u001b[0m \u001b[39m AND \u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=12'>13</a>\u001b[0m \u001b[39m (eth_from_address = lower(\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m0xc2f41b3a1ff28fd2a6eee76ee12e51482fcfd11f\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m)\u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=13'>14</a>\u001b[0m \u001b[39m OR eth_to_address = lower(\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m0xc2f41b3a1ff28fd2a6eee76ee12e51482fcfd11f\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m))\u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/jim/code/flipside/sdk/examples/python/notebooks/intro.ipynb#W4sZmlsZQ%3D%3D?line=14'>15</a>\u001b[0m \u001b[39m\"\"\"\u001b[39;49m)\n",
|
||||
"File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/flipside-2.0.2-py3.10.egg/flipside/flipside.py:43\u001b[0m, in \u001b[0;36mFlipside.query\u001b[0;34m(self, sql, ttl_minutes, max_age_minutes, cached, timeout_minutes, retry_interval_seconds, page_size, page_number, data_source, data_provider)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mquery\u001b[39m(\n\u001b[1;32m 29\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 30\u001b[0m sql,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 39\u001b[0m data_provider\u001b[39m=\u001b[39mDEFAULT_DATA_PROVIDER,\n\u001b[1;32m 40\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m QueryResultSet:\n\u001b[1;32m 41\u001b[0m query_integration \u001b[39m=\u001b[39m CompassQueryIntegration(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrpc)\n\u001b[0;32m---> 43\u001b[0m \u001b[39mreturn\u001b[39;00m query_integration\u001b[39m.\u001b[39;49mrun(\n\u001b[1;32m 44\u001b[0m Query(\n\u001b[1;32m 45\u001b[0m sql\u001b[39m=\u001b[39;49msql,\n\u001b[1;32m 46\u001b[0m ttl_minutes\u001b[39m=\u001b[39;49mttl_minutes,\n\u001b[1;32m 47\u001b[0m timeout_minutes\u001b[39m=\u001b[39;49mtimeout_minutes,\n\u001b[1;32m 48\u001b[0m max_age_minutes\u001b[39m=\u001b[39;49mmax_age_minutes,\n\u001b[1;32m 49\u001b[0m retry_interval_seconds\u001b[39m=\u001b[39;49mretry_interval_seconds,\n\u001b[1;32m 50\u001b[0m page_size\u001b[39m=\u001b[39;49mpage_size,\n\u001b[1;32m 51\u001b[0m page_number\u001b[39m=\u001b[39;49mpage_number,\n\u001b[1;32m 52\u001b[0m cached\u001b[39m=\u001b[39;49mcached,\n\u001b[1;32m 53\u001b[0m sdk_package\u001b[39m=\u001b[39;49mSDK_PACKAGE,\n\u001b[1;32m 54\u001b[0m sdk_version\u001b[39m=\u001b[39;49mSDK_VERSION,\n\u001b[1;32m 55\u001b[0m data_source\u001b[39m=\u001b[39;49mdata_source,\n\u001b[1;32m 56\u001b[0m data_provider\u001b[39m=\u001b[39;49mdata_provider,\n\u001b[1;32m 57\u001b[0m )\n\u001b[1;32m 58\u001b[0m )\n",
|
||||
"File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/flipside-2.0.2-py3.10.egg/flipside/integrations/query_integration/compass_query_integration.py:58\u001b[0m, in \u001b[0;36mCompassQueryIntegration.run\u001b[0;34m(self, query)\u001b[0m\n\u001b[1;32m 40\u001b[0m query \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_set_query_defaults(query)\n\u001b[1;32m 42\u001b[0m create_query_run_params \u001b[39m=\u001b[39m CreateQueryRunRpcParams(\n\u001b[1;32m 43\u001b[0m resultTTLHours\u001b[39m=\u001b[39m\u001b[39mint\u001b[39m(query\u001b[39m.\u001b[39mttl_minutes \u001b[39m/\u001b[39m \u001b[39m60\u001b[39m)\n\u001b[1;32m 44\u001b[0m \u001b[39mif\u001b[39;00m query\u001b[39m.\u001b[39mttl_minutes\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 56\u001b[0m dataProvider\u001b[39m=\u001b[39mquery\u001b[39m.\u001b[39mdata_provider \u001b[39mif\u001b[39;00m query\u001b[39m.\u001b[39mdata_provider \u001b[39melse\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39mflipside\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 57\u001b[0m )\n\u001b[0;32m---> 58\u001b[0m created_query \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrpc\u001b[39m.\u001b[39;49mcreate_query(create_query_run_params)\n\u001b[1;32m 59\u001b[0m \u001b[39mif\u001b[39;00m created_query\u001b[39m.\u001b[39merror:\n\u001b[1;32m 60\u001b[0m \u001b[39mraise\u001b[39;00m get_exception_by_error_code(\n\u001b[1;32m 61\u001b[0m error_code\u001b[39m=\u001b[39mcreated_query\u001b[39m.\u001b[39merror\u001b[39m.\u001b[39mcode \u001b[39mif\u001b[39;00m created_query\u001b[39m.\u001b[39merror \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 62\u001b[0m message\u001b[39m=\u001b[39mcreated_query\u001b[39m.\u001b[39merror\u001b[39m.\u001b[39mmessage \u001b[39mif\u001b[39;00m created_query\u001b[39m.\u001b[39merror \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 63\u001b[0m )\n",
|
||||
"File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/flipside-2.0.2-py3.10.egg/flipside/rpc.py:71\u001b[0m, in \u001b[0;36mRPC.create_query\u001b[0;34m(self, params)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mcreate_query\u001b[39m(\n\u001b[1;32m 64\u001b[0m \u001b[39mself\u001b[39m, params: CreateQueryRunRpcParams\n\u001b[1;32m 65\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m CreateQueryRunRpcResponse:\n\u001b[1;32m 66\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msession\u001b[39m.\u001b[39mpost(\n\u001b[1;32m 67\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39murl,\n\u001b[1;32m 68\u001b[0m data\u001b[39m=\u001b[39mjson\u001b[39m.\u001b[39mdumps(CreateQueryRunRpcRequest(params\u001b[39m=\u001b[39m[params])\u001b[39m.\u001b[39mdict()),\n\u001b[1;32m 69\u001b[0m headers\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_headers,\n\u001b[1;32m 70\u001b[0m ) \u001b[39mas\u001b[39;00m result:\n\u001b[0;32m---> 71\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_handle_response(result, \u001b[39m\"\u001b[39;49m\u001b[39mcreateQueryRun\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n\u001b[1;32m 73\u001b[0m create_query_resp \u001b[39m=\u001b[39m CreateQueryRunRpcResponse(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mdata)\n\u001b[1;32m 75\u001b[0m \u001b[39mreturn\u001b[39;00m create_query_resp\n",
|
||||
"File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/flipside-2.0.2-py3.10.egg/flipside/rpc.py:146\u001b[0m, in \u001b[0;36mRPC._handle_response\u001b[0;34m(self, result, method)\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[39mraise\u001b[39;00m ServerError(\n\u001b[1;32m 141\u001b[0m status_code\u001b[39m=\u001b[39mresult\u001b[39m.\u001b[39mstatus_code,\n\u001b[1;32m 142\u001b[0m message\u001b[39m=\u001b[39m\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mUnknown server error when calling `\u001b[39m\u001b[39m{\u001b[39;00mmethod\u001b[39m}\u001b[39;00m\u001b[39m`: \u001b[39m\u001b[39m{\u001b[39;00mresult\u001b[39m.\u001b[39mstatus_code\u001b[39m}\u001b[39;00m\u001b[39m - \u001b[39m\u001b[39m{\u001b[39;00mresult\u001b[39m.\u001b[39mreason\u001b[39m}\u001b[39;00m\u001b[39m. Please try again later.\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 143\u001b[0m )\n\u001b[1;32m 145\u001b[0m \u001b[39mif\u001b[39;00m result\u001b[39m.\u001b[39mstatus_code \u001b[39m==\u001b[39m \u001b[39m401\u001b[39m \u001b[39mor\u001b[39;00m result\u001b[39m.\u001b[39mstatus_code \u001b[39m==\u001b[39m \u001b[39m403\u001b[39m:\n\u001b[0;32m--> 146\u001b[0m \u001b[39mraise\u001b[39;00m ApiError(\u001b[39m\"\u001b[39m\u001b[39mUnauthorized\u001b[39m\u001b[39m\"\u001b[39m, result\u001b[39m.\u001b[39mstatus_code, \u001b[39m\"\u001b[39m\u001b[39mInvalid API Key.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 148\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 149\u001b[0m data \u001b[39m=\u001b[39m result\u001b[39m.\u001b[39mjson()\n",
|
||||
"\u001b[0;31mApiError\u001b[0m: Unauthorized: message=Invalid API Key., code=401"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"YOUR_API_KEY = os.environ.get(\"FLIPSIDE_API_KEY\")\n",
|
||||
@ -102,15 +86,7 @@
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'tx_hash': '0x799f8b4e18f6d4d9b7de6790b5efc9efdbcb27769353087d3361f672bfb2d41f', 'block_number': 15092844, 'block_timestamp': '2022-07-07 02:52:50.000', 'identifier': 'CALL_ORIGIN', 'origin_from_address': '0xc2f41b3a1ff28fd2a6eee76ee12e51482fcfd11f', 'origin_to_address': '0xd39badbf89f503dd77679052dc0263558fe48f00', 'origin_function_signature': '0x', 'eth_from_address': '0xc2f41b3a1ff28fd2a6eee76ee12e51482fcfd11f', 'eth_to_address': '0xd39badbf89f503dd77679052dc0263558fe48f00', 'amount': 0.027, 'amount_usd': 31.78, '_call_id': '0x799f8b4e18f6d4d9b7de6790b5efc9efdbcb27769353087d3361f672bfb2d41f-CALL_ORIGIN', '_inserted_timestamp': '2022-07-09 19:51:39.953'}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"## Explore the result set object\n",
|
||||
"\n",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
||||
2.0.3
|
||||
2.0.4
|
||||
@ -11,12 +11,12 @@ from .rpc import RPC
|
||||
|
||||
API_BASE_URL = "https://api-v2.flipsidecrypto.xyz"
|
||||
|
||||
SDK_VERSION = "2.0.3"
|
||||
SDK_VERSION = "2.0.4"
|
||||
SDK_PACKAGE = "python"
|
||||
|
||||
DEFAULT_DATA_SOURCE = "snowflake-default"
|
||||
DEFAULT_DATA_PROVIDER = "flipside"
|
||||
DEFAULT_PAGE_SIZE = 1000
|
||||
DEFAULT_PAGE_SIZE = 100000
|
||||
DEFAULT_PAGE_NUMBER = 1
|
||||
DEFAULT_TIMEOUT_MINUTES = 15
|
||||
DEFAULT_TTL_MINUTES = 60
|
||||
@ -69,7 +69,7 @@ class Flipside(object):
|
||||
self,
|
||||
query_run_id: str,
|
||||
page_number: int = 1,
|
||||
page_size: int = 10000,
|
||||
page_size: int = DEFAULT_PAGE_SIZE,
|
||||
filters: Optional[Union[List[Filter], None]] = [],
|
||||
sort_by: Optional[Union[List[SortBy], None]] = [],
|
||||
) -> QueryResultSet:
|
||||
|
||||
@ -59,12 +59,12 @@ class GetQueryRunResultsRpcRequest(RpcRequest):
|
||||
|
||||
# Response
|
||||
class GetQueryRunResultsRpcResult(BaseModel):
|
||||
columnNames: Optional[List[str]]
|
||||
columnTypes: Optional[List[str]]
|
||||
rows: List[Any]
|
||||
page: PageStats
|
||||
sql: str
|
||||
format: ResultFormat
|
||||
columnNames: Union[Optional[List[str]], None]
|
||||
columnTypes: Union[Optional[List[str]], None]
|
||||
rows: Union[List[Any], None]
|
||||
page: Union[PageStats, None]
|
||||
sql: Union[str, None]
|
||||
format: Union[ResultFormat, None]
|
||||
originalQueryRun: QueryRun
|
||||
redirectedToQueryRun: Union[QueryRun, None]
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user