Skip to main content

Client library for integration with datagrok API

Project description

Datagrok python client library

This library can be used for integration with datagrok. It is a python wrapper for public API, that has OpenAPI specification available here.

Refer to Help for more information.

Installation

To install package, use pip.

pip install datagrok-api

Usage

To use API client, import DatagrokClient to your project:

from datagrok_api import DatagrokClient

api = DatagrokClient('your token', 'datagrok url')

License

See License.md.

Examples

The package uses Pandas for representation of tables and dataframes.

import pandas as pd
from sklearn.datasets import load_iris

# Calls a Datagrok function
# Dataframes, columns and primitive data types are supported
api.call_function('Abs', {
	'x': -3
})

# Downloads file from a given connection
res = api.download_file('system.demofiles', 'demog.csv')
print(res.head())

# Uploads iris dataset as a table
iris_id = api.upload_table('iris', pd.DataFrame(load_iris()['data']))['ID']

# Iris also can be uploaded as a file
# api.upload_file('system.demofiles', 'iris.csv', 'iris.csv')

# Fetches freshly uploaded Iris table 
res = api.download_table(iris_id)
print(res.head())

# Creates dashboard from iris table with layout uploaded from file "iris.layout"
dashboard_id = api.create_dashboard('python-test', iris_id, layout_filename='iris.layout')['ID']

# Shares dashboard with admin
api.share_dashboard(dashboard_id, 'Test')

# Group Management Examples

# List all groups (excluding personal groups)
groups = api.list_groups(include_personal=False)
print("All groups:", [group.friendly_name for group in groups])

# List groups with members and memberships
groups_with_details = api.list_groups(
    include_personal=False,
    include_members=True,
    include_memberships=True
)
for group in groups_with_details:
    print(f"Group: {group.friendly_name}")
    print(f"Members: {[m.friendly_name for m in group.members]}")
    print(f"Memberships: {[m.friendly_name for m in group.memberships]}")

# Search for specific groups
dev_groups = api.lookup_groups("Dev")
print("Development groups:", [group.friendly_name for group in dev_groups])

# Get current user's group
current_user_group = api.get_current_user_group()
print("Current user's group:", current_user_group.friendly_name)

# Create a new group
new_group = Group(friendly_name="Data Science Team", description="Team working on ML projects")
created_group = api.save_group(new_group)
print("Created group:", created_group.friendly_name)

# Get group members
group_members = api.get_group_members(created_group.id)
print(f"Members of {created_group.friendly_name}:", [m.friendly_name for m in group_members])

# Get group memberships
group_memberships = api.get_group_memberships(created_group.id)
print(f"Memberships of {created_group.friendly_name}:", [m.friendly_name for m in group_memberships])

# Request membership in a group
request = api.request_group_membership(created_group.id)
print("Membership request created:", request.id)

# Get membership requests (as group admin)
requests = api.get_group_membership_requests(created_group.id)
for req in requests:
    print(f"Request from {req.from_group.friendly_name}: {'Approved' if req.is_approved else 'Pending'}")

# Approve or deny requests (as group admin)
if requests:
    if requests[0].from_group.friendly_name == "John Doe" and not requests[0].is_viewed:
        api.approve_membership_request(requests[0].id)
    else:
        api.deny_membership_request(requests[0].id)

# Update group information
created_group.description = "Updated description for Data Science Team"
updated_group = api.save_group(created_group, save_relations=True)
print("Updated group:", updated_group.friendly_name, updated_group.description)

# Add Member Examples

# Find John Doe's personal group
john_doe_groups = api.lookup_groups("John Doe")
john_doe_group = next((g for g in john_doe_groups if g.personal), None)
if john_doe_group:
    print(f"Found John Doe's personal group: {john_doe_group.friendly_name}")
    
    # Add John Doe as regular member
    created_group.add_member(john_doe_group)
    print(f"Added {john_doe_group.friendly_name} as regular member to {created_group.friendly_name}")
    
    # Verify the member was added
    updated_group = api.get_group(created_group.id)
    print(f"Members after adding: {[m.friendly_name for m in updated_group.members]}")
    
    # Add John Doe as admin
    created_group.add_member(john_doe_group, is_admin=True)
    print(f"Added {john_doe_group.friendly_name} as admin to {created_group.friendly_name}")
    
    # Verify the admin member was added
    updated_group = api.get_group(created_group.id)
    print(f"Admin members: {[m.friendly_name for m in updated_group.admin_members]}")
    print(f"All members: {[m.friendly_name for m in updated_group.members]}")
else:
    print("John Doe's personal group not found")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datagrok_api-0.0.8.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datagrok_api-0.0.8-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file datagrok_api-0.0.8.tar.gz.

File metadata

  • Download URL: datagrok_api-0.0.8.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for datagrok_api-0.0.8.tar.gz
Algorithm Hash digest
SHA256 41d9de601d94ce5729acf14cea7c873be98365aaee22501ac0a990c137669693
MD5 4049a564a47c2adbf2e76b661fb492a8
BLAKE2b-256 4c63dd2b1d77d03f4ea7fe5b38222002b7ca726158e32413bbcdd17da9261dff

See more details on using hashes here.

File details

Details for the file datagrok_api-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: datagrok_api-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for datagrok_api-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 deb38fd33620dde6e03ade861defaa2f5ad89c8f70252ed9bc9448f06c4c4e18
MD5 c24653ba769532be599c8ff7db4790f3
BLAKE2b-256 f8b78a244348aa835f3ad03ea0ec5a861f96d19ec3c0e209035d38a6c8f07dce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page