Automatic push from FunctionsAPI
This commit is contained in:
parent
41101ddf72
commit
de58476747
280
main.py
Normal file
280
main.py
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
from importlib.metadata import packages_distributions
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import uvloop
|
||||||
|
|
||||||
|
from fathom_services.client import FathomClient
|
||||||
|
from fathom_services.client.auth import FathomAuth
|
||||||
|
from fathom_services.client.config import ClientConfig
|
||||||
|
from fathom_services.client.config import ServiceAPIs
|
||||||
|
from fathom_services.client.config import ServicePaths
|
||||||
|
from fathom_services.client.models import SequenceAPIResponse
|
||||||
|
from fathom_services.client.models import SequenceColumnsAndRows
|
||||||
|
from fathom_services.client.models._base import PageQuery
|
||||||
|
|
||||||
|
|
||||||
|
async def demo_sequences():
|
||||||
|
FATHOM_TOKEN = None
|
||||||
|
fathom_auth = FathomAuth()
|
||||||
|
if FATHOM_TOKEN:
|
||||||
|
fathom_auth.set_token(token=FATHOM_TOKEN)
|
||||||
|
|
||||||
|
async with FathomClient(
|
||||||
|
client_config=ClientConfig(debug=True),
|
||||||
|
organization_id="3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||||||
|
project_id="3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||||||
|
service_paths= ServicePaths(
|
||||||
|
base_url="",
|
||||||
|
full_path_mappings={
|
||||||
|
ServiceAPIs.Sequences: "http://sequence-service:8080",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
auth=fathom_auth,
|
||||||
|
) as fc:
|
||||||
|
print(fc)
|
||||||
|
print(packages_distributions())
|
||||||
|
print("done")
|
||||||
|
dataset_id = str(uuid.uuid4())
|
||||||
|
# ## Metadata
|
||||||
|
# Create a sequence metadata obj
|
||||||
|
response = await fc.sequences.create(
|
||||||
|
data_set_id=dataset_id,
|
||||||
|
name="string",
|
||||||
|
columns=[
|
||||||
|
{
|
||||||
|
"name": "string1",
|
||||||
|
"description": "some string",
|
||||||
|
"valueType": "STRING",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "long1",
|
||||||
|
"description": "some long",
|
||||||
|
"valueType": "LONG",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "double1",
|
||||||
|
"description": "some double",
|
||||||
|
"valueType": "DOUBLE",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "date1",
|
||||||
|
"description": "some date",
|
||||||
|
"valueType": "DATE",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "boolean1",
|
||||||
|
"description": "some boolean",
|
||||||
|
"valueType": "BOOLEAN",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "geo1",
|
||||||
|
"description": "some geo",
|
||||||
|
"valueType": "GEO",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "uuid1",
|
||||||
|
"description": "some uuid",
|
||||||
|
"valueType": "UUID",
|
||||||
|
"nullable": True,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
client_id="string",
|
||||||
|
description="string",
|
||||||
|
)
|
||||||
|
print(type(response))
|
||||||
|
print(response)
|
||||||
|
sequence_id = response.id
|
||||||
|
|
||||||
|
# check exist on a sequence that does exist
|
||||||
|
response = await fc.sequences.exists(sequence_id)
|
||||||
|
print(response)
|
||||||
|
assert bool(response) is True
|
||||||
|
|
||||||
|
# Confirm sequence created
|
||||||
|
# Get all sequences
|
||||||
|
response = await fc.sequences.list()
|
||||||
|
print(type(response))
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
# Check paging
|
||||||
|
response = await fc.sequences.list(
|
||||||
|
page_query=PageQuery(page_number=0, page_size=1)
|
||||||
|
)
|
||||||
|
print(type(response))
|
||||||
|
print(response)
|
||||||
|
assert len(response.content) == 1
|
||||||
|
|
||||||
|
# Get single sequence
|
||||||
|
response = await fc.sequences.retrieve(sequence_id)
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
update_description = "updated description"
|
||||||
|
update_name = "updated name"
|
||||||
|
update_dataset_id = str(uuid.uuid4())
|
||||||
|
# Update sequence
|
||||||
|
await fc.sequences.update(
|
||||||
|
id=sequence_id,
|
||||||
|
data_set_id=update_dataset_id,
|
||||||
|
name=update_name,
|
||||||
|
description=update_description,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Confirm sequence updated
|
||||||
|
response = await fc.sequences.retrieve(sequence_id)
|
||||||
|
print(response)
|
||||||
|
assert response.name == update_name
|
||||||
|
assert response.description == update_description
|
||||||
|
assert response.data_set_id == update_dataset_id
|
||||||
|
|
||||||
|
# ## Data
|
||||||
|
# retrieve empty data
|
||||||
|
res = await fc.sequences.data.retrieve(id=sequence_id)
|
||||||
|
print(res)
|
||||||
|
assert len(res) == 0
|
||||||
|
|
||||||
|
# insert data
|
||||||
|
create_row_ids = ["row1", "row2", "row3"]
|
||||||
|
create_row_ids_len = len(create_row_ids)
|
||||||
|
seq_data_insert = SequenceColumnsAndRows(
|
||||||
|
columns=[
|
||||||
|
"boolean1",
|
||||||
|
"date1",
|
||||||
|
"double1",
|
||||||
|
"geo1",
|
||||||
|
"long1",
|
||||||
|
"string1",
|
||||||
|
"uuid1",
|
||||||
|
],
|
||||||
|
rows=[
|
||||||
|
{
|
||||||
|
"id": create_row_ids[0],
|
||||||
|
"values": [
|
||||||
|
True,
|
||||||
|
"2023-12-08T13:53:59.609899Z",
|
||||||
|
4.294967297,
|
||||||
|
{"type": "Point", "coordinates": [11.2, -64.1]},
|
||||||
|
4294967297,
|
||||||
|
"string_value1",
|
||||||
|
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": create_row_ids[1],
|
||||||
|
"values": [
|
||||||
|
False,
|
||||||
|
"2023-12-08T13:53:59.619899Z",
|
||||||
|
-4.294967297,
|
||||||
|
{"type": "Point", "coordinates": [-2.11, 1.64]},
|
||||||
|
-4294967297,
|
||||||
|
"string_value2",
|
||||||
|
"3fa85f64-5717-4562-b3fc-2c963f66afa7",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
seq_data_insert_len = len(seq_data_insert.rows)
|
||||||
|
res = await fc.sequences.data.insert(id=sequence_id, rows=seq_data_insert)
|
||||||
|
print(type(res))
|
||||||
|
print(res)
|
||||||
|
assert res == SequenceAPIResponse(count=seq_data_insert_len, errors=None)
|
||||||
|
|
||||||
|
res = await fc.sequences.data.retrieve(id=sequence_id)
|
||||||
|
print(type(res))
|
||||||
|
print(res)
|
||||||
|
assert len(res) == seq_data_insert_len
|
||||||
|
|
||||||
|
# load data as pandas dataframe
|
||||||
|
res_df = res.to_pandas(res.columns)
|
||||||
|
print(type(res_df))
|
||||||
|
print(res_df)
|
||||||
|
print(res_df.dtypes)
|
||||||
|
|
||||||
|
# update data
|
||||||
|
seq_data_update = SequenceColumnsAndRows(
|
||||||
|
columns=["geo1", "long1", "string1"],
|
||||||
|
rows=[
|
||||||
|
{
|
||||||
|
"id": create_row_ids[0],
|
||||||
|
"values": [
|
||||||
|
{"type": "Point", "coordinates": [11.11, 64.64]},
|
||||||
|
13,
|
||||||
|
"string_value3u",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
)
|
||||||
|
seq_data_update_len = len(seq_data_update.rows)
|
||||||
|
res = await fc.sequences.data.update(id=sequence_id, rows=seq_data_update)
|
||||||
|
print(type(res))
|
||||||
|
print(res)
|
||||||
|
assert res == SequenceAPIResponse(count=seq_data_update_len, errors=None)
|
||||||
|
|
||||||
|
# upsert data
|
||||||
|
seq_data_upsert = SequenceColumnsAndRows(
|
||||||
|
columns=["geo1", "double1", "string1", "uuid1"],
|
||||||
|
rows=[
|
||||||
|
{
|
||||||
|
"id": create_row_ids[1],
|
||||||
|
"values": [
|
||||||
|
{"type": "Point", "coordinates": [2.2, 3.3]},
|
||||||
|
11,
|
||||||
|
"string_value1u",
|
||||||
|
"3fa85f64-5717-4562-b3fc-2c963f66afa7",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": create_row_ids[2],
|
||||||
|
"values": [
|
||||||
|
{"type": "Point", "coordinates": [31.11, 34.64]},
|
||||||
|
14,
|
||||||
|
"string_value4u",
|
||||||
|
"3fa85f64-5717-4562-b3fc-2c963f66afa8",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
seq_data_upsert_len = len(seq_data_upsert.rows)
|
||||||
|
res = await fc.sequences.data.upsert(id=sequence_id, rows=seq_data_upsert)
|
||||||
|
print(type(res))
|
||||||
|
print(res)
|
||||||
|
assert res == SequenceAPIResponse(count=seq_data_upsert_len, errors=None)
|
||||||
|
|
||||||
|
res = await fc.sequences.data.retrieve(id=sequence_id)
|
||||||
|
print(type(res))
|
||||||
|
print(res)
|
||||||
|
assert len(res) == create_row_ids_len
|
||||||
|
|
||||||
|
# Remove sequence data
|
||||||
|
res = await fc.sequences.data.remove(sequence_id, rows=create_row_ids)
|
||||||
|
print(type(res))
|
||||||
|
print(res)
|
||||||
|
assert res == SequenceAPIResponse(count=create_row_ids_len, errors=None)
|
||||||
|
|
||||||
|
# Delete sequence
|
||||||
|
response = await fc.sequences.remove(sequence_id)
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
# Confirm sequence deleted
|
||||||
|
# check exist on a sequence that does not exist
|
||||||
|
response = await fc.sequences.exists(sequence_id)
|
||||||
|
print(response)
|
||||||
|
assert bool(response) is False
|
||||||
|
print("Really done")
|
||||||
|
return "Really done"
|
||||||
|
|
||||||
|
|
||||||
|
async def async_main():
|
||||||
|
return await demo_sequences()
|
||||||
|
|
||||||
|
|
||||||
|
def main(request):
|
||||||
|
print(request)
|
||||||
|
outputs = uvloop.run(async_main())
|
||||||
|
print(outputs)
|
||||||
|
return outputs
|
||||||
40
nexus.pem
Normal file
40
nexus.pem
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIG9DCCBdygAwIBAgIIOB+YpANnBXUwDQYJKoZIhvcNAQELBQAwgcYxCzAJBgNV
|
||||||
|
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUw
|
||||||
|
IwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypo
|
||||||
|
dHRwOi8vY2VydHMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNV
|
||||||
|
BAMTK1N0YXJmaWVsZCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIw
|
||||||
|
HhcNMjAwNzA5MDcyNTAxWhcNMjIwNjA1MDQ0NjEzWjBEMSEwHwYDVQQLExhEb21h
|
||||||
|
aW4gQ29udHJvbCBWYWxpZGF0ZWQxHzAdBgNVBAMMFiouZmF0aG9tLXNvbHV0aW9u
|
||||||
|
cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx/dGoIlZNV7Z1
|
||||||
|
Ci7P3U+yesmAk2ClGuKNykNaxOLTrsMSzQekeeFklPk9St8Pltric6HJ+8C2qdLf
|
||||||
|
1ph7dydVxAceOS6WP7McW6D/umACvvop9O7eicXhbpQBzrGuJkDfnhQzncVqx4wK
|
||||||
|
e55Zivesu/KKX1GZZG/xWugjnkFIAcGW1MEfk5DZQ37sevf0iRA28DSLS+/Vk0rN
|
||||||
|
1WTpm0gU6IA4beb0sW06X6JUwKVxTBOOZqNkM9xmN7HnD2bbFd4SCaAetnoklNSK
|
||||||
|
3KGo3rZzyQBRWFJa9MUp0IhEfDS37pI34NayKEnyLvfwDPICFYkl6oOD592zWNmq
|
||||||
|
vmLhaADrAgMBAAGjggNlMIIDYTAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsG
|
||||||
|
AQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCBaAwPQYDVR0fBDYwNDAyoDCg
|
||||||
|
LoYsaHR0cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9zZmlnMnMxLTIxOS5jcmww
|
||||||
|
YwYDVR0gBFwwWjBOBgtghkgBhv1uAQcXATA/MD0GCCsGAQUFBwIBFjFodHRwOi8v
|
||||||
|
Y2VydGlmaWNhdGVzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkvMAgGBmeB
|
||||||
|
DAECATCBggYIKwYBBQUHAQEEdjB0MCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5z
|
||||||
|
dGFyZmllbGR0ZWNoLmNvbS8wRgYIKwYBBQUHMAKGOmh0dHA6Ly9jZXJ0aWZpY2F0
|
||||||
|
ZXMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeS9zZmlnMi5jcnQwHwYDVR0j
|
||||||
|
BBgwFoAUJUWBaFAmOD07LSy+zWrZtj2zZmMwNwYDVR0RBDAwLoIWKi5mYXRob20t
|
||||||
|
c29sdXRpb25zLmNvbYIUZmF0aG9tLXNvbHV0aW9ucy5jb20wHQYDVR0OBBYEFAgi
|
||||||
|
AF3IFlTCqq/gf7oM+YjXZtcZMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgAp
|
||||||
|
eb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZcJV3HhAAAAXMydqK3AAAEAwBHMEUC
|
||||||
|
IQCPvwXSZZ4pFR8BOudZ5NcxMdlheNlpRcds5nkxEf0BgwIgZaFbQToweqped+tV
|
||||||
|
ylS6baeU+o4L3TXda8bmVtTwO9YAdwAiRUUHWVUkVpY/oS/x922G4CMmY63AS39d
|
||||||
|
xoNcbuIPAgAAAXMydqP1AAAEAwBIMEYCIQCI2AbtEAJn+XB4RI9auEHP138+jMZn
|
||||||
|
EzGjCEqXUqcKTwIhAM395yI6ISIJQmGA1z0GYLfLsfRptHHNirR1BCZGaMP9AHUA
|
||||||
|
QcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jwkGKWBvYAAAFzMnalVQAABAMARjBE
|
||||||
|
AiAPfhSz5wOBMWhlM2zwsyWmmNGxSVE8LzdLfzf8Masu6wIgfWoclpAHCIkx1703
|
||||||
|
49BsyffQbCTtHlF6Kcp/VJ7vOk4wDQYJKoZIhvcNAQELBQADggEBADbcz8YO+DNh
|
||||||
|
0PeGET8STS7YdhxTw/1mvgQ5FCK8GARzeKWb7DAYyiAxr5wqfXfAgNnhEt3VwJp6
|
||||||
|
C8LCWAdKvYZc4dZ8jI5iSKz7Pvsk4WLqXAuLxHV5fyfS737ZmUT6cMzqtunzpAuQ
|
||||||
|
CNd6vUWjwnjHzhGVcsk32fSPz6s38Nw6987R0COsZAagyTF+/Qs/K90tjLKwRdLN
|
||||||
|
nYSjFUrXSXE96CEHKyoy2Z68REoQj+oQvxUaySnDS1zCGOfhOTMRYG2qlCB/ypGH
|
||||||
|
VpgqY5Gn2fk9pKvrrC5ca1UHIJcpKxuaC6tLhFvUjMftvAmCAzsHOp+NM6QqP6g1
|
||||||
|
WTyK8yOyhNw=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
4
pip.conf
Normal file
4
pip.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[global]
|
||||||
|
index = https://nexus.fathom-solutions.com/repository/pypi/
|
||||||
|
index-url = https://nexus.fathom-solutions.com/repository/pypi/simple
|
||||||
|
trusted-host = nexus.fathom-solutions.com
|
||||||
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fathom-services-sdk==0.2.1
|
||||||
|
aiohttp
|
||||||
|
uvloop
|
||||||
Loading…
Reference in New Issue
Block a user