Skip to main content

Experimental Python class abstraction layer for `spond` package.

Project description

Spond-classes

About

Spond is a team/group-oriented events system.

The unofficial Python spond library package gets data from the Spond API and returns dict objects.

This unofficial Python spond-classes package parses those dict objects to create class instances, i.e. provides an object abstraction layer.

Experimental, partial, read-only implementation.

Install

Install from PyPI, e.g:

pip install spond-classes

Or if you're using Poetry:

poetry add spond-classes

Note that spond is required for practical use, but not a technical dependency, so needs to be installed separately.

Example code

Adapting the example code in Spond README:

import asyncio
from spond import spond
import spond_classes

# fake credentials and ids
username = 'my@mail.invalid'
password = 'Pa55worD'
group_id = 'G1'
subgroup_id = 'SG1'

async def main():
    s = spond.Spond(username=username, password=password)
    group_data = await s.get_group(group_id)
    await s.clientsession.close()

    # Now we can create a class instance ...
    group = spond_classes.Group(**group_data)

    # ... use class properties instead of dict keys ...
    print(group.name)

    # ... access nested instances and their properties ...
    for member in group.members:
        print(f"{member.full_name} is in the {group.name} group")

    # ... and use some helper methods
    subgroup = group.subgroup_by_id(subgroup_id)
    for member in group.members_by_subgroup(subgroup)
        print(f"{member.full_name} is in the {subgroup.name} subgroup")

asyncio.run(main())

Key features

  • Create Group instance from the dict returned from the API by the corresponding Spond method:
spond_classes.Group(**dict)
  • Then access class instance attributes and methods:
Group.uid: str
Group.members: list[Member]
Group.name: str
Group.roles: list[Role]
Group.subgroups: list[Subgroup]

Group.member_by_id() -> Member
Group.role_by_id() -> Role
Group.subgroup_by_id() -> Subgroup

Group.members_by_subgroup(subgroup: Subgroup) -> list[Member]
Group.members_by_role(role: Role) -> list[Member]
  • Also provides access to nested Member, Role, Subgroup instances:
Member.uid: str
Member.created_time: datetime
Member.email: str
Member.first_name: str
Member.full_name: str
Member.last_name: str
Member.phone_number: str
Member.Profile.uid: str
Member.role_uids: list[str]
Member.subgroup_uids: list[str]

Role.uid: str
Role.name: str

Subgroup.uid: str
Subgroup.name: str
  • Create Event instance from the dict returned from the API by the corresponding Spond method:
spond_classes.Event(**dict)
  • Then access attributes:
Event.uid: str
Event.heading: str
Event.start_time: datetime
Event.Responses.accepted_uids: list[str]
Event.Responses.declined_uids: list[str]
Event.Responses.unanswered_uids: list[str]
Event.Responses.waiting_list_uids: list[str]
Event.Responses.unconfirmed_uids: list[str]

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

spond_classes-0.11.1a0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

spond_classes-0.11.1a0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file spond_classes-0.11.1a0.tar.gz.

File metadata

  • Download URL: spond_classes-0.11.1a0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Windows/11

File hashes

Hashes for spond_classes-0.11.1a0.tar.gz
Algorithm Hash digest
SHA256 b1de543b1cf461c6add1f1a25792654175bd813c4d2875092dc39be8572e7631
MD5 89cc820aea8b0f9f98929bddbfd426e0
BLAKE2b-256 885d1c0e9e03553313e9caeb7aee862d6edda4d2a72e1b3d4f813c5185156880

See more details on using hashes here.

File details

Details for the file spond_classes-0.11.1a0-py3-none-any.whl.

File metadata

File hashes

Hashes for spond_classes-0.11.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 f008cd4d3bd542954e51012ea997ec0076a4ccfdfc7c9f0b2e35b93687984a0d
MD5 7fbd25115a16935cd01d7e8f56d06a36
BLAKE2b-256 71e28ec5555df1c4166b5b87158d550d294f0a414140d4dacf9ea3446b1f2682

See more details on using hashes here.

Supported by

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