A modular Python toolkit
Project description
Spring-Dancer-SI-Kits
A modular Python utility library for internal tooling. Covers string manipulation, WBS project management, JSON diffing, typed settings, serialization, and more.
- Python >= 3.13
- License: MIT
- Author: luvmagi
Project Structure
Spring-Dancer-SI-Kits/
│
├── src/sikits/ # Library source
│ ├── textcraft/ # Text & string utilities
│ │ ├── string_nameing.py # CaseUtils — naming convention converter & branch-name generator
│ │ └── class_str.py # class_str() — recursive pretty-printer for plain classes
│ │
│ ├── serialization/ # Serialization & settings
│ │ ├── base.py # JsonMixin — dataclass JSON/YAML serialization mixin
│ │ └── setting.py # SettingRegister — generates typed Python class from config file
│ │
│ ├── wbs/ # Work Breakdown Structure
│ │ ├── core/
│ │ │ ├── base.py # WBS base models
│ │ │ └── mapping.py # Field mapping logic
│ │ ├── schema/
│ │ │ ├── backend.py # Backend WBS schema
│ │ │ └── frontend.py # Frontend WBS schema
│ │ ├── io/
│ │ │ ├── csv_reader.py # Read WBS from CSV
│ │ │ ├── csv_writer.py # Write WBS to CSV
│ │ │ ├── excel_writer.py # Write WBS to Excel
│ │ │ ├── json_reader.py # Read WBS from JSON
│ │ │ └── json_writer.py # Write WBS to JSON
│ │ ├── dashboard/
│ │ │ ├── calc/
│ │ │ │ ├── assignee.py # Per-assignee metrics
│ │ │ │ ├── burndown.py # Burndown chart data
│ │ │ │ ├── funnel.py # Status funnel
│ │ │ │ └── review_lag.py # Review lag analysis
│ │ │ └── writer.py # Dashboard output writer
│ │ └── snapshot/
│ │ └── snapshot.py # WBS snapshot
│ │
│ ├── json_diff/ # JSON diff engine
│ │ ├── core/
│ │ │ ├── differ.py # Core diff logic
│ │ │ ├── key_detector.py # Key detection strategies
│ │ │ └── strategies.py # Diff strategies
│ │ ├── schema/
│ │ │ ├── config.py # Diff configuration schema
│ │ │ └── result.py # Diff result schema
│ │ ├── io/
│ │ │ ├── json_writer.py # Write diff as JSON
│ │ │ └── markdown_writer.py # Write diff as Markdown
│ │ └── exceptions.py # Diff exceptions
│ │
│ ├── decotextual/ # Decorator utilities
│ │ ├── decorators.py # Decorator definitions
│ │ ├── deco_app.py # Decorator application helpers
│ │ ├── _linear.py # Linear execution helper
│ │ └── _stop.py # Stop condition helper
│ │
│ ├── database/ # Database access helpers
│ │ ├── handler.py # TableHandler
│ │ └── model/ # DB schema models
│ │ └── schema.py # Table, Column, Index
│ ├── dataframe/ # DataFrame utilities
│ ├── excel/ # Excel read/write helpers
│ └── image/
│ └── image_to_ico.py # Image → ICO converter
│
├── tests/ # Test suite
│ ├── sikits/
│ │ ├── textcraft/
│ │ │ └── test_string_nameing.py
│ │ └── serialization/
│ │ └── test_setting.py
│ └── resource/ # Test input/output fixtures
│ └── serialization/setting/
│ ├── input.toml / .yaml / .yml / .json / empty.json
│ └── output_*.py # Generated files (inspectable)
│
├── docs/Project-SpringDancer-Sikits/ # Module documentation
│ ├── serialization/
│ │ ├── base.md
│ │ └── setting.md
│ └── textcraft/
│ └── string_nameing.md (utils-string_nameing.md)
│
├── pyproject.toml # Project metadata & pytest config
├── CLAUDE.md # AI assistant context
└── README.md
Modules
sikits.textcraft
| File | Class / Function | Description |
|---|---|---|
string_nameing.py |
CaseUtils |
Convert strings between 11 naming conventions (snake_case, camelCase, PascalCase, kebab-case …). Handles full-width (全角) characters and Japanese punctuation. |
string_nameing.py |
CaseUtils.to_branch_name |
Convert a GitHub issue title to a valid git branch name. Strips illegal chars, normalizes separators, supports Japanese input. |
class_str.py |
class_str |
Recursive pretty-printer for plain Python objects — used by generated settings classes. |
sikits.serialization
| File | Class | Description |
|---|---|---|
base.py |
JsonMixin |
@dataclass mixin that adds load_dict, load_file, save_file, to_json_string. Supports nested JsonMixin, Enum, Optional[T], list[JsonMixin]. |
setting.py |
SettingRegister |
Reads a TOML / YAML / JSON config file and generates a fully-typed Python class. The generated class loads from the config file at runtime — no values are baked in. |
Settings workflow:
from pathlib import Path
from sikits.serialization.setting import SettingRegister
# Generate once (during development / CI)
SettingRegister(Path("config/settings.toml")).to_class_file(Path("src/myapp/settings.py"))
# Use everywhere — dynamically loaded at startup
from myapp.settings import Setting
print(Setting.db.host)
print(Setting.servers[0].name)
sikits.wbs
Work Breakdown Structure toolkit. Reads/writes project task data (CSV, JSON, Excel) and computes dashboard metrics (burndown, assignee load, review lag, status funnel).
sikits.json_diff
JSON diff engine with pluggable key-detection and output strategies. Produces structured diff results exportable as JSON or Markdown.
sikits.decotextual
Decorator utilities for contextual text processing pipelines.
sikits.database
Database modeling toolkit for PostgreSQL and Oracle.
| File | Class / Function | Description |
|---|---|---|
model/schema.py |
Table, Column, Index |
Unified Pydantic Dataclass models for database objects. Compatible with JsonMixin. |
handler.py |
TableHandler |
Converts between DDL (Postgres/Oracle) and internal models. Supports multi-statement DDL and index extraction. |
Installation
# Install from PyPI
pip install spring-dancer-sikits
# Editable install (development)
pip install -e .
# Or with uv
uv sync
Quickstart
from sikits import CaseUtils, JsonDiffer, SettingRegister, TableHandler
Release
python -m build
twine upload dist/*
Running Tests
pytest
Documentation
Full module docs: docs/Project-SpringDancer-Sikits/
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 spring_dancer_sikits-0.1.2.tar.gz.
File metadata
- Download URL: spring_dancer_sikits-0.1.2.tar.gz
- Upload date:
- Size: 88.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c2255e2afdf41b8ea99cf8c3d170ea7e5e96e406c3898e5378b77901c164acd
|
|
| MD5 |
a1b368fb10a9d7fae275686a2236fddd
|
|
| BLAKE2b-256 |
fee43446ff5e47408129415b81d41b6a15818363180782ef3acaf898a68736ce
|
File details
Details for the file spring_dancer_sikits-0.1.2-py3-none-any.whl.
File metadata
- Download URL: spring_dancer_sikits-0.1.2-py3-none-any.whl
- Upload date:
- Size: 125.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1596080b82b601e882ca4053b82cf6ff61d75a0206d492c67896e28b028b9ba7
|
|
| MD5 |
e547af54d20857b3c8b7c46146666e66
|
|
| BLAKE2b-256 |
6073c919ca2a3667dce29933bb32152aa7f2a2e74ec80ca48b6ac16f48cf7ec2
|