Skip to main content

A Python interface for Plankanban

Project description

plankapy

A python 3 based API for controlling Planka

Release

Installation

pip install plankapy

Documentation

The full documentation can be found here.

All Interfaces are documented in the API section.

Features

No Keys Required

Planka models have all been implemented as Python objects. This means that you can access all the properties of a resource as if it were a Python object:

project.name
>>> 'Project 1'

project.managers
>>> [User(id=1, username='username', ...), User(id=2, username='username2', ...), ...]

Disambiguation of resource attributes and methods

All models have type hints for every property and attribute, meaning you don't have to guess what a method or property will return. When using a modern IDE, this allows for extensive code completion and prevents you from having to remember what every property and method returns.

Synced by Default

All included resources are accessible through object properties that send out a request to the server when accessed. This means that you can access up to date information about a resource without having to manually refresh it.

list1 = board.lists[0]
list2 = board.lists[1]

list1.cards
>>> [Card(id=1, name='Card 1', ...), Card(id=2, name='Card 2', ...)]

list2.cards
>>> []

list1.cards[0].move(list2)

list1.cards
>>> [Card(id=2, name='Card 2', ...)]

list2.cards
>>> [Card(id=1, name='Card 1', ...)]

Edit with Context

Because all stored objects maintain the attributes assigned to them on their creation, direct attribute editing is not synced with the server resource. To mitigate this a .editor() context manager is provided that refreshes the resource on entry and updates the resource on exit.

Direct editing of attributes fails to update the resource

c1 = list1.cards[0]
c1.name = "New Name"
c1.name
>>> 'New Name'

# Get the resource again to see that the name has not changed
c2 = list1.cards[0]
c2.name
>>> 'Card 1'

Context editing updates the resource after exiting the context

c1 = list1.cards[0]
with c1.editor():
    c1.name = "New Name"

c1.name
>>> 'New Name'

# Get the resource again to see that the name has changed
c2 = list1.cards[0]

c2.name
>>> 'New Name'

Usage

Getting started with plankapy is as simple as creating a Planka object and passing it your authentication method. From there, you can access all the resources available to your logged in user account.

from plankapy import Planka, PasswordAuth

planka = Planka("https://planka.example.com", PasswordAuth("username", "password"))

planka.me
>>> User(id=1, username='username', ...)

planka.projects
>>> [Project(id=1, name='Project 1', ...), Project(id=2, name='Project 2', ...), ...]

License

This project is licensed under the GPLv3 License - see the LICENSE file for details.

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

plankapy-2.0.3.tar.gz (43.1 kB view details)

Uploaded Source

Built Distribution

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

plankapy-2.0.3-py3-none-any.whl (41.9 kB view details)

Uploaded Python 3

File details

Details for the file plankapy-2.0.3.tar.gz.

File metadata

  • Download URL: plankapy-2.0.3.tar.gz
  • Upload date:
  • Size: 43.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for plankapy-2.0.3.tar.gz
Algorithm Hash digest
SHA256 8c76a0c7f3f35d97a3cd496b5f1ed819bb4e83bd7760a8c2431a79f57e5d5f04
MD5 f43898c90f164f0907afd3b26309c1a6
BLAKE2b-256 2bccc249fc500b1e37381a06d6d6ecd75f5d4ad7c5677641a6c02a6016bfc283

See more details on using hashes here.

File details

Details for the file plankapy-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: plankapy-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 41.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for plankapy-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2c364985038fdd2b510959f67672e87fd424bb8ba1cbacb0ea5c948d163a65a5
MD5 212361869b3292e77909ffc83b234213
BLAKE2b-256 21dd46f9d826dab919870dcb84e06c123d0e96b22b2d1f3132099c286b9fc489

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