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/
Metadata
Release files for spring-dancer-sikits 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spring_dancer_sikits-0.3.0.tar.gz | 234.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spring_dancer_sikits-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 556.0 kB
Release files / spring_dancer_sikits-0.3.0.tar.gz
| Download URL | spring_dancer_sikits-0.3.0.tar.gz |
|---|---|
| Size | 234.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0da31c1441262892848e69602b0ce1ccfe1015662b1d895c6c8ee686f38d3a19
|
|
BLAKE2b-256 checksum How to use checksums |
41947207acb69a453aabfdc1965fc7d6e15373076ab98f0df2db5806f0e8364b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / spring_dancer_sikits-0.3.0-py3-none-any.whl
| Download URL | spring_dancer_sikits-0.3.0-py3-none-any.whl |
|---|---|
| Size | 321.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4989317f658689a674e6d67296106726ea15589ffe7c25a645870dbebb6bf6aa
|
|
BLAKE2b-256 checksum How to use checksums |
0dd5acbf3f5b931fc54375b68d13deda010495e532688392158069071c9c095d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|