/bubble-client

🫧 Asynchronous Python client for Bubble.io APIs

Primary LanguagePythonMIT LicenseMIT

Bubble-Client

PyPI License Code style

Python client for the Bubble.io APIs

Installation

pip install bubble-client

Examples

  • Get users (or any Bubble thing, really):
>>> from bubble_client import configure, BubbleThing
>>> configure(base_url=..., token=...)

>>> class User(BubbleThing):
...     pass

>>> async for user in User.get():
...     print(user)
User({'name': 'Beatrix Emery', ...})
User({'name': 'Dr. Jekyll', ...})

>>> user.name
'Dr. Jekyll'
  • Change values:
>>> user.name = "Mr. Hyde"
>>> await user.save()
>>> user.name
'Mr. Hyde'
  • Count users:
>>> User.count()
2
  • Add a new user:
>>> user = User(name="Sir Charles Emery")
>>> await user.save()
>>> User.count()
3
  • Search!
>>> constraints = [{'key': 'name', 'constraint_type': 'equals', 'value': 'Mr. Hyde'}]

>>> pet = await Pet.get_one(constraints=constraints)
>>> pet.name
'Mr. Hyde'
  • Join stuff!
>>> class Pet(BubbleThing):
...     pass

>>> pet = await pet.get_one()
>>> await pet.join("created_by", User)

>>> pet.type
'dog'
>>> pet.created_by
User({'name': 'Mr. Hyde', ...})
>>> pet.created_by.name
'Mr. Hyde'
  • Also works on cursors!
>>> async for pet in Pet.get().join("created_by", User):
...     print(pet)
Pet({'type': 'dog', 'created_by': User({'name': 'Mr. Hyde', ...}), ...})
Pet({'type': 'donkey', 'created_by': User({'name': 'Beatrix Emery', ...}), ...})