A lexicographic indexing system for Kanban boards
Project description
kanban_indexer
kanban_indexer
is a simple Python library that implements a lexicographic indexing system for ordered collections, such as columns on a Kanban board. It uses a chracter-based system that should allow for an arbitrary number of insertions between any two existing indices without the need for reindexing.
Features
- Generates string indices composed of characters A-Z
- Uses lexicographic ordering to determine item placement
- Creates new indices at the midpoint between existing indices
- Allows insertions before the first item and after the last item
- Avoids floating-point precision issues by using string comparisons
- Produces human-readable indices
Installation
You can install kanban_indexer
using pip:
pip install kanban_indexer
Usage
Here's a quick example of how to use kanban_indexer
:
from kanban_indexer import compute_intermediate_index, compute_preceding_index, compute_succeeding_index
# Generate an index between "B" and "C"
middle_index = compute_intermediate_index("B", "C")
print(middle_index) # Output: BM
# Generate an index before "A"
before_b = compute_preceding_index("B")
print(before_b) # Output: AZ
# Generate an index after "Z"
after_z = compute_succeeding_index("Z")
print(after_z) # Output: ZB
API Reference
compute_intermediate_index(index_before: str, index_after: str) -> str
Computes the intermediate index between two given indices.
compute_preceding_index(index: str) -> str
Returns the preceding index value based on the given index.
compute_succeeding_index(index: str) -> str
Returns the succeeding index based on the given index.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Development
To set up the development environment:
- Clone the repository
- Create and activate a virtual environment:
python -m venv venv source venv/bin/activate
- Install the package with development dependencies:
pip install -e .[dev]
Running Tests
You can run tests using pytest:
pytest
Linting and Formatting
This project uses ruff
for linting and formatting. To run ruff:
ruff check .
To automatically fix issues and format code:
ruff check --fix .
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
Hashes for kanban_indexer-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a72b2f3f88d56cd9066d848963cb29518162b8db069770f3826d1c5c2659fbad |
|
MD5 | 71ee4825cc99f75e3c7983d00449822c |
|
BLAKE2b-256 | 3697e7768dce38b4dc6d714d417ee428e080ad04a5fd71c7322dd86d23ab6b4a |