A client to connect to a Dmart instance
Project description
Pydmart
This is a Python Dmart client (v1.3.x) used to interact with a Dmart instance
Installation
Pydmart is distributed via PyPI:
pip install pydmart
Example
The DmartService class provides methods to interact with a Dmart instance. Below is a detailed explanation of each method available in the class.
- Initialize the service by providing the base URL of the Dmart instance:
service = DmartService("http://localhost:8282")
- Perform a login action using the provided shortname and password:
login = await service.login("dmart", "Test1234")
- Fetch the profile of the current user:
me = await service.get_profile()
- Create a new space:
action_request_record = ActionRequestRecord(
resource_type=ResourceType.space,
shortname="myspace_test",
subpath="/",
attributes={
"is_active": True
}
)
action_request = ActionRequest(
space_name="myspace_test",
request_type=RequestType.create,
records=[action_request_record]
)
space = await service.space(action_request)
- Remove a space:
action_request_record = ActionRequestRecord(
resource_type=ResourceType.space,
shortname="myspace_test",
subpath="/",
attributes={}
)
action_request = ActionRequest(
space_name="myspace_test",
request_type=RequestType.delete,
records=[action_request_record]
)
space = await service.space(action_request)
- Query the spaces:
query_request = QueryRequest(
type=QueryType.spaces,
space_name="management",
subpath="/",
search=""
)
query = await service.query(query_request)
- Query with a join (attach related entries from another subpath):
from pydmart import JoinQuery, JoinType
orders = QueryRequest(
type=QueryType.subpath,
space_name="shop",
subpath="orders",
search="",
retrieve_json_payload=True,
join=[
JoinQuery(
# left path is read from each order, right path from the joined records
join_on="payload.body.customer:shortname",
alias="customer", # results land under record.attributes["join"]["customer"]
type=JoinType.left, # left (default) | right | inner | outer
query=QueryRequest( # the right side: which entries to join against
type=QueryType.subpath,
space_name="shop",
subpath="customers",
search="",
retrieve_json_payload=True,
),
),
],
)
response = await service.query(orders)
for record in response.records:
matched = record.attributes.get("join", {}).get("customer", [])
# `matched` is the list of joined customer records for this order
APIs
-
login(shortname: str, password: str) -> ApiResponsePerforms a login action using the provided shortname and password. -
login_by(credentials: dict, password: str) -> ApiResponsePerforms a login action using custom credentials and password. -
logout() -> ApiResponsePerforms a logout action. -
create_user(request: dict) -> ActionResponseCreates a new user with the provided request data. -
update_user(request: dict) -> ActionResponseUpdates an existing user with the provided request data. -
check_existing(prop: str, value: str) -> ResponseEntryChecks if a user exists based on the provided property and value. -
otp_request(self, msisdn: Optional[str] = None, email: Optional[str] = None, accept_language: Optional[str] = None)Requests an OTP (One Time Password) for the provided MSISDN or email. -
otp_verify(self, otp: str, msisdn: Optional[str] = None, email: Optional[str] = None, accept_language: Optional[str] = None) -> ApiResponseVerifies the provided OTP for the given MSISDN or email. -
otp_request_login(self, msisdn: Optional[str] = None, email: Optional[str] = None, accept_language: Optional[str] = None)Requests an OTP for login using the provided MSISDN or email. -
password_reset_request(self, msisdn: Optional[str] = None, shortname: Optional[str] = None, email: Optional[str] = None)Requests a password reset for the provided MSISDN, shortname, or email. -
confirm_otp(self, otp: str, msisdn: Optional[str] = None, email: Optional[str] = None)Verifies the provided OTP for password reset using the given MSISDN or email. -
user_reset(self, shortname: str)Performs a user reset action for the specified shortname. -
validate_password(self, password: str)Validates the provided password against the Dmart password policy. -
get_profile() -> ProfileResponseGets the profile of the current user. -
query(query: QueryRequest, scope: str = "managed") -> ApiResponsePerforms a query action with the provided query request and scope. -
csv(query: QueryRequest) -> ApiResponseQueries the entries as a CSV file with the provided query request. -
space(action: ActionRequest) -> ActionResponsePerforms actions on spaces with the provided action request. -
request(action: ActionRequest) -> ActionResponsePerforms a request action with the provided action request. -
retrieve_entry(resource_type: ResourceType, space_name: str, subpath: str, shortname: str, retrieve_json_payload: bool = False, retrieve_attachments: bool = False, validate_schema: bool = True, scope: str = "managed") -> ResponseEntryRetrieves an entry based on the provided parameters. -
upload_with_payload(space_name: str, subpath: str, shortname: str, resource_type: ResourceType, payload_file: Any, content_type: Optional[ContentType] = None, schema_shortname: Optional[str] = None) -> ApiResponseUploads a file with payload to the specified space. -
fetch_data_asset(resource_type: str, data_asset_type: str, space_name: str, subpath: str, shortname: str, query_string: str = "SELECT * FROM file", filter_data_assets: Optional[List[str]] = None, branch_name: Optional[str] = None) -> Dict[str, Any]Fetches a data asset based on the provided parameters. -
get_spaces() -> ApiResponseGets the list of spaces. -
get_children(space_name: str, subpath: str, limit: int = 20, offset: int = 0, restrict_types: Optional[List[ResourceType]] = None) -> ApiResponseGets the children of a specified space. -
get_attachment_url(resource_type: ResourceType, space_name: str, subpath: str, parent_shortname: str, shortname: str, ext: Optional[str] = None, scope: str = "managed") -> strGets the URL of an attachment. -
get_space_health(space_name: str) -> Dict[str, Any]Gets the health status of a specified space. -
get_attachment_content(resource_type: str, space_name: str, subpath: str, shortname: str, scope: str = "managed") -> Dict[str, Any]Gets the content of an attachment. -
get_payload(resource_type: str, space_name: str, subpath: str, shortname: str, ext: str = ".json", scope: str = "managed") -> Dict[str, Any]Gets the payload of a specified resource. -
get_payload_content(resource_type: str, space_name: str, subpath: str, shortname: str, ext: str = ".json", scope: str = "managed") -> Dict[str, Any]Gets the content of a payload. -
progress_ticket(space_name: str, subpath: str, shortname: str, action: str, resolution: Optional[str] = None, comment: Optional[str] = None) -> Dict[str, Any]Progresses a ticket with the provided parameters. -
submit(space_name: str, schema_shortname: str, subpath: str, record: Dict[str, Any]) -> Dict[str, Any]Submits a record to the specified space and schema. -
get_manifest() -> Dict[str, Any]Gets the manifest information. -
get_settings() -> Dict[str, Any]Gets the settings information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydmart-2.4.0.tar.gz.
File metadata
- Download URL: pydmart-2.4.0.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ce258f9a6b649b5f283d8911d3f2a845379fa7d932aab2b6305056cf02fce9d
|
|
| MD5 |
b31f84aa43059f5c3bd84163c9397a20
|
|
| BLAKE2b-256 |
0b4e9cb75b2d214631d4eaf7d46a6ee64b88c1fb1231fa62f1c30788dfa2cd88
|
File details
Details for the file pydmart-2.4.0-py3-none-any.whl.
File metadata
- Download URL: pydmart-2.4.0-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7c27ea21e6f410d7610c1feaa1679fad37b1502c53657bb663739a100e77a9a
|
|
| MD5 |
8c44dbba57faf6a9fec61a7ef7d22edc
|
|
| BLAKE2b-256 |
f85f1bdfb1216929af95c44c45bbd70f031401eba97eaa05ce079f2f11b0bd72
|